Snap · Authentication Profile

Snap Authentication

Authentication

Snap declares 0 security scheme(s) across its OpenAPI definitions.

CompanyAdvertisingMarketingSocial MediaAugmented RealityCameraAuthenticationIdentityConversionsAttributionSDKs
Methods: Schemes: 0 OAuth flows: API key in:

Security Schemes

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: https://developers.snap.com/api/marketing-api/Ads-API/authentication
docs:
  - https://developers.snap.com/api/marketing-api/Ads-API/authentication
  - https://developers.snap.com/marketing-api/Conversions-API/GetStarted
  - https://developers.snap.com/marketing-api/Ads-MCP/Introduction
  - https://developers.snap.com/snap-kit/login-kit/overview
api: Snap
summary: >-
  Snap runs four distinct authentication models across its developer surface,
  and they do not share credentials: OAuth 2.0 authorization-code for the
  Marketing API, a static non-expiring token for the Conversions API, a separate
  pre-registered-client OAuth flow for the Ads MCP server, and OAuth 2.0 /
  OpenID Connect for Login Kit.

summary_types:
  types: [oauth2, http-bearer, apiKey]
  api_key_in: [query]
  oauth2_flows: [authorizationCode]

security_schemes:
  - name: oauth2
    label: Marketing API OAuth
    type: oauth2
    flow: authorizationCode
    authorization_endpoint: https://accounts.snapchat.com/login/oauth2/authorize
    token_endpoint: https://accounts.snapchat.com/login/oauth2/access_token
    refresh: true
    token_type: Bearer
    access_token_ttl_seconds: 3600
    header: "Authorization: Bearer {access_token}"
    grants: [authorization_code, refresh_token]
    parameters:
      authorize: [client_id, redirect_uri, response_type=code, scope, state]
      token: [client_id, client_secret, code, grant_type, redirect_uri]
    scopes:
      - snapchat-marketing-api
      - snapchat-offline-conversions-api
      - snapchat-profile-api
    discovery:
      rfc8414: false
      note: >-
        accounts.snapchat.com serves no /.well-known/oauth-authorization-server
        (404, probed 2026-08-13). Endpoints are documented in prose only.
    ref: scopes/snap-scopes.yml

  - name: mcp-oauth
    label: Snapchat Ads MCP OAuth
    type: oauth2
    flow: authorizationCode
    issuer: https://mcp.snapchat.com/ads
    resource: https://mcp.snapchat.com/ads
    authorization_endpoint: https://mcp.snapchat.com/authorize
    token_endpoint: https://mcp.snapchat.com/token
    grants: [authorization_code, refresh_token]
    pkce: S256
    token_endpoint_auth_methods_supported: [none]
    dynamic_client_registration: false
    openid_connect: false
    scopes: [snapads.read]
    client_ids_preregistered:
      - {agent: Claude, client_id: claude-snap-ads}
      - {agent: Codex, client_id: codex-snap-ads}
      - {agent: ChatGPT, client_id: chatgpt-snap-ads}
      - {agent: Antigravity, client_id: antigravity-snap-ads}
      - {agent: Gemini, client_id: gemini-snap-ads}
    discovery:
      rfc8414: true
      rfc9728: true
      authorization_server_metadata: well-known/snap-oauth-authorization-server.json
      protected_resource_metadata: well-known/snap-oauth-protected-resource.json
      challenge: 'WWW-Authenticate: Bearer resource_metadata="https://mcp.snapchat.com/.well-known/oauth-protected-resource/ads"'
    consent_model: >-
      Two-stage: an Organization/Business Admin approves the agent for the
      organization, then each member authorizes their own access. Per agent, per
      member. A member reaches only what their existing Snapchat Ads permissions
      already allow.
    revocation: https://accounts.snapchat.com/v2/manage-apps
    ref: mcp/snap-mcp.yml

  - name: capi-static-token
    label: Conversions API long-lived token
    type: apiKey
    in: query
    parameter_name: access_token
    expiry: none
    rotation: "Tokens can be generated and deleted from Ads Manager -> Business Details -> Conversions API Tokens."
    required_role: Organization Admin
    scoping: >-
      A token may only send events for the Pixel IDs and Snap App IDs that
      belong to the Org where the token was generated; cross-org use fails.
    declared_in: openapi/snap-conversions-api-v3-openapi.yml
    risk_note: >-
      The V3 spec carries the credential as a QUERY parameter on every operation
      and declares no components.securitySchemes at all. A non-expiring bearer
      credential in a URL lands in proxy logs, referrer headers and access logs.
    source: https://developers.snap.com/marketing-api/Conversions-API/GetStarted

  - name: bearerAuth
    label: Conversions API v2 bearer
    type: http
    scheme: bearer
    bearerFormat: JWT
    declared_in: openapi/snap-conversions-api-openapi.yml
    applied: "Global security requirement on the v2 spec."

snap_kit_login:
  summary: >-
    Snap Kit / Login Kit provides "Login with Snapchat" built on OAuth 2.0 with
    OpenID Connect support for identity, returning approved profile fields.
  docs: https://developers.snap.com/snap-kit/login-kit/overview
  type: [oauth2, openIdConnect]
  sdk_status: >-
    The Login Kit SDKs that wrapped the OAuth2 service (and supplied a drop-in
    login button) are being deprecated. Snap's guidance is to implement OAuth2
    directly; the underlying OAuth2 service remains fully available.

errors:
  - status: 401
    signal: 'WWW-Authenticate: Bearer error="invalid_token", error_description="The access token expired"'
    applies_to: Marketing API
    remediation: Refresh the access token with the refresh_token grant and retry.
  - status: 401
    signal: 'WWW-Authenticate: Bearer resource_metadata="https://mcp.snapchat.com/.well-known/oauth-protected-resource/ads"'
    applies_to: Ads MCP
    remediation: Complete the OAuth flow with the agent's pre-registered client id and scope snapads.read.

notes: >-
  Many standard OAuth 2.0 client libraries handle the Marketing API
  refresh-and-retry pattern automatically. The MCP server rejects the default
  scope set requested by generic clients — Snap's own docs warn that the scope
  must be exactly `snapads.read` or authorization fails.