Sharethrough · Authentication Profile

Sharethrough Authentication

Authentication

Authentication profile for the two Sharethrough API surfaces. The Publisher Reporting API is an OAuth 2.0 bearer-token API: every request carries an Authorization: Bearer header and an anonymous request is rejected with a 401. Tokens are issued out of the company's own Auth0 tenant, whose OpenID Provider Metadata is public. The header-bidding endpoint is unauthenticated and identified by a supply_id query parameter plus a per-publisher placement key.

Sharethrough declares 2 security scheme(s) across its OpenAPI definitions.

Native AdvertisingProgrammatic AdvertisingSSPDSPOpenRTBAd ExchangeHeader BiddingCTVSustainability
Methods: Schemes: 2 OAuth flows: API key in:

Security Schemes

http
scheme: bearer · in: header ()
none
· in: query (supply_id)

Source

Authentication Profile

sharethrough-authentication.yml Raw ↑
name: Sharethrough Authentication
description: >-
  Authentication profile for the two Sharethrough API surfaces. The Publisher Reporting API
  is an OAuth 2.0 bearer-token API: every request carries an Authorization: Bearer header and
  an anonymous request is rejected with a 401. Tokens are issued out of the company's own
  Auth0 tenant, whose OpenID Provider Metadata is public. The header-bidding endpoint is
  unauthenticated and identified by a supply_id query parameter plus a per-publisher
  placement key.
generated: '2026-08-12'
method: probed
source: >-
  live probes of https://publisher-api.sharethrough.com/v2/programmatic and
  https://sharethrough-users.auth0.com/.well-known/openid-configuration, plus Sharethrough's
  own first-party example client at https://github.com/strchives/publisher-api-examples
docs: https://support.sharethrough.com/hc/en-us/sections/360009157451-Publisher-API-for-Reporting
docs_status: >-
  401 anonymously — the Publisher API for Reporting section of the support site now requires
  a signed-in Zendesk user, so the written auth reference is not publicly readable.
schemes:
  - id: publisher_api_bearer
    api: Sharethrough Publisher Reporting API
    type: http
    scheme: bearer
    in: header
    header: Authorization
    format: 'Authorization: Bearer <AUTH_TOKEN>'
    required: true
    evidence:
      - >-
        POST https://publisher-api.sharethrough.com/v2/programmatic with no Authorization
        header returns HTTP 401 {"message":"Unauthorized","statusCode":401}
      - >-
        POST with an invalid bearer token returns the identical 401 body — no distinct
        invalid_token/expired_token signal is exposed to the caller
      - >-
        libs/auth.py in Sharethrough's own publisher-api-examples repo implements a
        requests.auth.AuthBase that sets r.headers["authorization"] = "Bearer " + token
      - >-
        setup.py in the same repo defines AUTH_TOKEN as the single credential the client needs
    token_acquisition: >-
      Not publicly documented. The token is issued to a publisher account; the support article
      that described how to obtain it (360044449471) now returns 404 to anonymous callers.
    rotation: unknown
    scopes: none documented
  - id: bidding_supply_id
    api: Sharethrough Header Bidding (Prebid) API
    type: none
    in: query
    parameter: supply_id
    required: true
    value_observed: WYu2BXv1
    format: 'https://btlr.sharethrough.com/universal/v1?supply_id=<supply_id>'
    evidence:
      - >-
        STR_ENDPOINT in modules/sharethroughBidAdapter.js (Prebid.js, adapter VERSION 4.3.0)
        is https://btlr.sharethrough.com/universal/v1?supply_id=WYu2BXv1
      - >-
        An anonymous POST of a malformed OpenRTB body to that URL returns HTTP 400 with an
        empty body — the endpoint accepts unauthenticated requests and validates the payload
    note: >-
      This is bid-request identification, not authentication. Per-publisher authorization is
      carried by the required params.pkey placement key inside the bid request, which
      Sharethrough issues after the Integrations team approves the publisher.
identity_provider:
  vendor: Auth0
  tenant: sharethrough-users.auth0.com
  issuer: https://sharethrough-users.auth0.com/
  discovery: well-known/sharethrough-openid-configuration.json
  discovered_via: 'http://nag.sharethrough.com 302 -> https://sharethrough-users.auth0.com/u/login'
  authorization_endpoint: https://sharethrough-users.auth0.com/authorize
  token_endpoint: https://sharethrough-users.auth0.com/oauth/token
  revocation_endpoint: https://sharethrough-users.auth0.com/oauth/revoke
  jwks_uri: https://sharethrough-users.auth0.com/.well-known/jwks.json
  device_authorization_endpoint: https://sharethrough-users.auth0.com/oauth/device/code
  id_token_signing: RS256
  pkce: 'S256 and plain both advertised'
  grant_types_supported:
    - client_credentials
    - authorization_code
    - refresh_token
    - password
    - implicit
    - 'urn:ietf:params:oauth:grant-type:device_code'
    - 'urn:ietf:params:oauth:grant-type:token-exchange'
    - 'urn:ietf:params:oauth:grant-type:jwt-bearer'
  token_endpoint_auth_methods_supported:
    - client_secret_basic
    - client_secret_post
    - private_key_jwt
    - none
  scopes_supported:
    - openid
    - profile
    - offline_access
    - name
    - given_name
    - family_name
    - nickname
    - email
    - email_verified
    - picture
    - created_at
    - identities
    - phone
    - address
  scopes_note: >-
    These are the stock OpenID Connect / Auth0 profile scopes the tenant advertises. They are
    NOT an authorization model for the Publisher Reporting API — Sharethrough documents no
    API scopes or permissions anywhere public, which is why no scopes/ artifact and no
    OAuthScopes pointer are emitted for this provider.
  caveats:
    - >-
      The tenant advertises the legacy implicit and resource-owner-password grants alongside
      authorization_code + PKCE. Both are discouraged by OAuth 2.1 / BCP 240.
transport:
  tls_required: true
  observed_tls: TLSv1.3
  hsts_on_bidding_host: 'max-age=16000000; includeSubDomains; preload'
  hsts_on_reporting_host: not sent on the /v2 JSON responses observed
  cors: 'access-control-allow-origin: * on every publisher-api.sharethrough.com response observed'
mtls: none
api_keys: none
basic_auth: none
notes:
  - >-
    There is no published OpenAPI for either surface, so this profile is built from live
    probes and from Sharethrough's own example client rather than derived from securitySchemes.
  - >-
    A caller cannot distinguish "no token", "bad token" and "expired token": all three
    produce the same opaque 401 body with no WWW-Authenticate header.