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
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