Braze · Authentication Profile

Braze Authentication

Authentication

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

Customer EngagementMarketing AutomationMessagingPush NotificationsEmailSMSMobile
Methods: http, oauth2 Schemes: 3 OAuth flows: authorizationCode API key in: header

Security Schemes

BearerAuth http
scheme: bearer
ScimBearer http
scheme: bearer
BrazeMcpOAuth oauth2

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: openapi/ (24 specs, 95 operations) + the Braze docs auth pages
docs:
  api_basics: https://www.braze.com/docs/api/basics/
  api_keys: https://www.braze.com/docs/api/api_key/
  mcp_setup: https://www.braze.com/docs/user_guide/brazeai/mcp_server/setup
  scim: https://www.braze.com/docs/api/endpoints/scim/
summary:
  types: [http, oauth2]
  http_schemes: [bearer]
  api_key_in: [header]
  oauth2_flows: [authorizationCode]
  note: >-
    Two distinct authentication models. The REST API uses a workspace-scoped REST API key
    presented as an HTTP Bearer token — a static key, not an OAuth token, despite the
    Bearer framing. The Braze MCP server uses real OAuth 2.0 with PKCE against the Braze
    dashboard. Nothing in the REST surface uses OAuth, and nothing in MCP uses an API key.
schemes:
- name: BearerAuth
  type: http
  scheme: bearer
  surface: rest
  credential: Braze REST API key
  header: 'Authorization: Bearer YOUR_REST_API_KEY'
  scope_model: >-
    Per-key endpoint permissions granted in the Braze dashboard (Settings > API Keys), plus
    optional IP allowlisting. A key that lacks a permission returns 401/403 rather than a
    scope error, so permissions are not discoverable from the API.
  host_binding: >-
    Keys are bound to one workspace on one Braze instance; calling the wrong regional REST
    host with a valid key returns 401 Unauthorized.
  sources:
  - openapi/braze-catalogs-catalog-items-asynchronous-api-openapi.yml
  - openapi/braze-catalogs-catalog-items-synchronous-api-openapi.yml
  - openapi/braze-catalogs-catalog-management-synchronous-api-openapi.yml
  - openapi/braze-email-lists-addresses-api-openapi.yml
  - openapi/braze-export-campaign-api-openapi.yml
  - openapi/braze-export-canvas-api-openapi.yml
  - openapi/braze-export-custom-events-api-openapi.yml
  - openapi/braze-export-kpi-api-openapi.yml
  - openapi/braze-export-news-feed-api-openapi.yml
  - openapi/braze-export-purchases-api-openapi.yml
  - openapi/braze-export-segment-api-openapi.yml
  - openapi/braze-export-session-analytics-api-openapi.yml
  - openapi/braze-export-users-api-openapi.yml
  - openapi/braze-messaging-live-activities-api-openapi.yml
  - openapi/braze-messaging-schedule-mesages-api-openapi.yml
  - openapi/braze-messaging-send-messages-api-openapi.yml
  - openapi/braze-preference-center-api-openapi.yml
  - openapi/braze-scim-api-openapi.yml
  - openapi/braze-sms-api-openapi.yml
  - openapi/braze-subscription-groups-sms-and-whatsapp-api-openapi.yml
  - openapi/braze-templates-content-blocks-api-openapi.yml
  - openapi/braze-templates-email-templates-api-openapi.yml
  - openapi/braze-user-data-api-openapi.yml
  - openapi/braze-user-data-external-id-migration-api-openapi.yml
- name: ScimBearer
  type: http
  scheme: bearer
  surface: rest-scim
  credential: SCIM token (separate from the REST API key)
  note: >-
    /scim/v2/Users is authorized by a dedicated SCIM token generated in the dashboard, not
    by a REST API key. The harvested spec models it with the same BearerAuth scheme, which
    understates the separation.
  sources: [openapi/braze-scim-api-openapi.yml]
- name: BrazeMcpOAuth
  type: oauth2
  surface: mcp
  flow: authorizationCode
  authorizationUrl: https://dashboard.braze.com/oauth/authorize
  tokenUrl: https://rest.iad-01.braze.com/oauth/token
  registrationUrl: https://rest.iad-01.braze.com/oauth/register
  pkce: [S256]
  grant_types: [authorization_code, refresh_token]
  token_endpoint_auth_methods: [none]
  scopes: [mcp:tools, mcp:resources]
  discovery:
    protected_resource: https://mcp.braze.com/.well-known/oauth-protected-resource
    authorization_server: https://dashboard.braze.com/.well-known/oauth-authorization-server
  note: >-
    Public client with dynamic registration (RFC 7591) and no client secret; the user
    authorizes in a browser against their Braze dashboard session. Probed 2026-08-13.
  sources: [scopes/braze-scopes.yml, mcp/braze-mcp.yml]
sdk_auth:
  note: >-
    The client-side SDKs (web/iOS/Android/etc.) authenticate with a public API key plus an
    optional SDK Authentication JWT signed with a key pair configured in the dashboard —
    a third credential type distinct from both models above.
  docs: https://www.braze.com/docs/developer_guide/sdk_integration/authentication
  key_management_api: https://www.braze.com/docs/api/endpoints/sdk_authentication/post_create_sdk_authentication_key