GroundTruth · Authentication Profile

Groundtruth Authentication

Authentication

GroundTruth secures its APIs with apiKey across 2 declared security schemes, as derived from its OpenAPI definitions.

CompanyMartechAdvertisingLocation IntelligenceMarketingAdtechLocation-Based MarketingAdvertising APICampaign ManagementAd ReportingAttributionGeofencingDigital Out Of HomeCTV
Methods: apiKey Schemes: 2 OAuth flows: API key in: header

Security Schemes

api-key apiKey
· in: header (X-GT-API-KEY)
user-id apiKey
· in: header (X-GT-USER-ID)

Source

Authentication Profile

Raw ↑
generated: '2026-08-12'
method: searched
source: openapi/groundtruth-ads-manager-openapi.yml + openapi/groundtruth-reporting-openapi.yml
docs: https://api-docs.groundtruth.com/welcome-824669m0
summary:
  types:
  - apiKey
  api_key_in:
  - header
  model: >-
    Paired-header API key. Both GroundTruth API surfaces require the SAME two headers together —
    X-GT-USER-ID (the calling user's identifier) and X-GT-API-KEY (the secret). Neither header is
    sufficient on its own. There is no OAuth 2.0, OIDC, mutual TLS or bearer-token flow on either
    surface, and therefore no scope surface (scopes/ is intentionally absent).
  credential_issuance: >-
    Not self-serve. The provider's own reference states "API credentials are provided on a request
    basis", and the help centre directs reporting-API users to contact support to request
    credentials. There is no signup, key-provisioning or key-rotation endpoint in either spec.
schemes:
- name: api-key
  type: apiKey
  in: header
  parameter: X-GT-API-KEY
  description: Secret API key issued by GroundTruth on request.
  sources:
  - openapi/groundtruth-ads-manager-openapi.yml
  - openapi/groundtruth-reporting-openapi.yml
- name: user-id
  type: apiKey
  in: header
  parameter: X-GT-USER-ID
  description: Identifier of the user the key is issued to; sent alongside X-GT-API-KEY.
  sources:
  - openapi/groundtruth-ads-manager-openapi.yml
  - openapi/groundtruth-reporting-openapi.yml
declared_but_undefined:
- name: session
  used_by_operations: 248
  note: >-
    248 of the 259 Ads Manager operations list `session` in their `security` requirement, but
    `session` is NOT defined in components.securitySchemes (only `api-key` and `user-id` are).
    This is a real defect in the published contract: a generated client cannot resolve the scheme.
    It most likely refers to the browser session cookie the ads.groundtruth.com console uses.
    Recorded as observed; not resolved, and not invented.
observed:
- probe: GET https://api-public.groundtruth.com/accounts?tenant_id=1&organization_id=1
  http_status: 401
  body: '{"errors":[{"code":"UNAUTHENTICATED","message":"Sorry, you need to be authenticated to perform this operation."}]}'
  fetched: '2026-08-12'
- probe: GET https://reporting.groundtruth.com/demand/v1/campaign/1/daily
  http_status: 401
  header: 'x-amzn-ErrorType: UnauthorizedException'
  fetched: '2026-08-12'
unauthenticated_operations:
  count: 11
  note: >-
    11 Ads Manager operations carry no `security` block at all (including GET /health and
    GET /version). GET https://api-public.groundtruth.com/health returned 200 "ok" anonymously.
cross_links:
  conventions: conventions/groundtruth-conventions.yml
  errors: errors/groundtruth-problem-types.yml
  conformance: conformance/groundtruth-conformance.yml