Singular · Authentication Profile

Singular Authentication

Authentication

Singular secures its APIs with apiKey and oauth2 across 5 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).

CompanyMarketing AnalyticsMobile AttributionAttributionMarketingAdvertisingAnalyticsMobile Measurement PartnerSKAdNetworkDeep LinkingFraud PreventionETLMCPAd MonetizationPrivacy
Methods: apiKey, oauth2 Schemes: 5 OAuth flows: authorizationCode API key in: query, header

Security Schemes

apiKey-query apiKey
· in: query (api_key)
apiKey-authorization-header apiKey
· in: header (Authorization)
sdk-key apiKey
· in: sdk-configuration (SDK Key / SDK Secret)
oauth2-mcp oauth2
· flows: authorizationCode
oauth2-wordpress-mcp oauth2
· flows: authorizationCode

Source

Authentication Profile

singular-authentication.yml Raw ↑
generated: '2026-08-12'
method: searched
source: >-
  https://support.singular.net/hc/en-us/articles/360045245692-Reporting-API-Reference +
  https://support.singular.net/hc/en-us/articles/53262822713755-Custom-Fraud-Rules-API-Reference +
  https://support.singular.net/hc/en-us/articles/37923459892507-Singular-MCP +
  https://mcp.singular.net/.well-known/oauth-authorization-server (200) +
  live probes of api.singular.net and s2s.singular.net
docs: https://support.singular.net/hc/en-us/articles/207553433-Getting-Started-with-the-Singular-Reporting-API
summary:
  types: [apiKey, oauth2]
  api_key_in: [query, header]
  oauth2_flows: [authorizationCode]
schemes:
  - name: apiKey-query
    type: apiKey
    in: query
    parameter: api_key
    applies_to:
      - Reporting API (api.singular.net/api/v2.0/)
      - SKAdNetwork API
      - Ad Monetization API
      - Singular Links API
      - Custom Fraud Rules API
      - Publisher Blacklist API
      - Partner Configuration Changes Log API
      - Testing Console API
    description: >-
      "All API requests require an API key. To retrieve the key, log into your account and go
      to Developer Tools > API Keys. You can insert the key in the api_key parameter in your
      request, or provide the token under an Authorization HTTP header."
    sources: [docs:support.singular.net/360045245692, docs:support.singular.net/360056377792]
  - name: apiKey-authorization-header
    type: apiKey
    in: header
    parameter: Authorization
    bearer_prefix: false
    description: >-
      The same account API key may be sent as a bare Authorization header value. Singular's
      Custom Fraud Rules reference is explicit: "Put the API key in the authorization HTTP
      header ... Do not prefix the header value with Bearer." Singular's own Python client
      (singular-labs/singular_api_client) sends `headers = {"Authorization": self.api_key}`.
    sources:
      - docs:support.singular.net/53262822713755
      - https://github.com/singular-labs/singular_api_client/blob/master/singular_api_client/singular_client.py
  - name: sdk-key
    type: apiKey
    in: sdk-configuration
    parameter: SDK Key / SDK Secret
    applies_to: [iOS/Android/Unity/Flutter/React Native/Cordova/Web SDKs, Server-to-Server endpoints]
    description: >-
      Client-side attribution SDKs and the s2s.singular.net ingestion endpoints authenticate
      with an SDK Key (and the `a` parameter on S2S calls), issued per app from the Singular
      console. This is a distinct credential from the server-side Reporting API key.
    sources: [docs:support.singular.net/31394799175963, docs:support.singular.net/31496864868635]
  - name: oauth2-mcp
    type: oauth2
    applies_to: [Singular MCP (mcp.singular.net/mcp-server/mcp)]
    flows:
      - flow: authorizationCode
        authorizationUrl: https://mcp.singular.net/oauth_server/authorize
        tokenUrl: https://mcp.singular.net/oauth_server/token
        registrationUrl: https://mcp.singular.net/oauth_server/register
        scopes: [mcp:read]
        pkce: [S256]
        token_endpoint_auth_methods: [client_secret_post, none]
        dynamic_client_registration: true
    description: >-
      The Singular MCP server is a full OAuth 2.1-style protected resource: RFC 8414
      authorization-server metadata, RFC 9728 protected-resource metadata, RFC 7591 dynamic
      client registration, PKCE S256, and a published JWKS at
      https://mcp.singular.net/.well-known/jwks.json. Bearer token in the Authorization
      header; a call without one returns 401 with a WWW-Authenticate challenge naming the
      resource metadata document.
    sources:
      - https://mcp.singular.net/.well-known/oauth-authorization-server
      - https://mcp.singular.net/.well-known/oauth-protected-resource
      - docs:support.singular.net/37923459892507
  - name: oauth2-wordpress-mcp
    type: oauth2
    applies_to: [www.singular.net/wp-json/mcp/mcp-oauth-server]
    flows:
      - flow: authorizationCode
        authorizationUrl: https://www.singular.net/oauth/authorize
        tokenUrl: https://www.singular.net/oauth/token
        revocationUrl: https://www.singular.net/oauth/revoke
        scopes: [mcp]
        pkce: [S256]
        token_endpoint_auth_methods: [none]
    description: >-
      A second OAuth authorization server advertised by the WordPress marketing site for its
      WP MCP adapter endpoint. Separate from the product MCP above.
    sources:
      - https://www.singular.net/.well-known/oauth-authorization-server
      - https://www.singular.net/.well-known/oauth-protected-resource
console_access:
  mfa: true
  sso: true
  note: >-
    "Singular supports 2FA as well as SSO" (SSO is listed as an Enterprise-plan feature on
    the pricing page).
  source: https://www.singular.net/data-security-privacy/
x-evidence:
  - {url: 'https://api.singular.net/api/v2.0/reporting', http_status: 401, body: '{"status": 1, "substatus": 1, "value": "Missing API Key"}', fetched: '2026-08-12'}
  - {url: 'https://api.singular.net/api/v1/fraud/rules/meta', http_status: 401, body: '{"status": 1, "substatus": 1, "value": "Missing API Key"}', fetched: '2026-08-12'}
  - {url: 'https://mcp.singular.net/mcp-server/mcp', http_status: 401, body: 'invalid_token (WWW-Authenticate Bearer)', fetched: '2026-08-12'}
notes: >-
  No OpenAPI/Swagger document is published on any Singular host, so this profile is read from
  the provider's prose reference plus live probes and the published OAuth metadata rather
  than from securitySchemes. No OpenID Connect discovery document is served
  (/.well-known/openid-configuration is 404 on every host including mcp.singular.net).