Salesforce Marketing Cloud · Authentication Profile

Salesforce Marketing Cloud Authentication

Authentication

Salesforce Marketing Cloud secures its APIs with oauth2 across 1 declared security scheme, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials and authorizationCode flow(s).

AutomationContent ManagementCustomer JourneyDigital MarketingEmailMarketingMarketing AutomationMCPMobile MessagingPersonalizationSMSWebhook
Methods: oauth2 Schemes: 1 OAuth flows: clientCredentials, authorizationCode API key in:

Security Schemes

OAuth2 oauth2
· flows: clientCredentials, authorizationCode

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: openapi/salesforce-marketing-cloud-*-openapi.yml (derived baseline)
docs: https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/authentication.html
note: Upgraded from derived to searched on 2026-08-13. The captured OpenAPI declares only the clientCredentials flow; Salesforce's docs additionally document an authorization code flow for web and public
  apps, plus the token-response fields that make this API workable — most importantly rest_instance_url and soap_instance_url, which are how a client discovers its own tenant hosts. A client that hardcodes
  a subdomain instead of reading these is doing it wrong.
summary:
  types:
  - oauth2
  oauth2_flows:
  - clientCredentials
  - authorizationCode
  api_key_in: []
  mutual_tls: false
  openid_connect: false
schemes:
- name: OAuth2
  type: oauth2
  flows:
  - flow: clientCredentials
    tokenUrl: https://{subdomain}.auth.marketingcloudapis.com/v2/token
    scopes: 0
    integration_type: Server-to-Server
    docs: https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/access-token-s2s.html
  - flow: authorizationCode
    tokenUrl: https://{subdomain}.auth.marketingcloudapis.com/v2/token
    integration_type: Web and Public App
    docs: https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/integration-considerations.html
    note: '''Web and Public App Integrations with Authorization Code Grant Type.'' Declared in the docs but NOT declared in any captured OpenAPI, which only models clientCredentials.'
  description: Marketing Cloud Engagement uses OAuth 2.0. Credentials come from an API Integration inside an Installed Package created in Marketing Cloud Setup > Apps > Installed Packages. The Installed
    Package also fixes which scopes the integration may ever hold.
  sources:
  - openapi/salesforce-marketing-cloud-assets-api-openapi.yml
  - openapi/salesforce-marketing-cloud-contacts-api-openapi.yml
  - openapi/salesforce-marketing-cloud-journeys-api-openapi.yml
token_request:
  method: POST
  path: /v2/token
  host: https://{subdomain}.auth.marketingcloudapis.com
  fields:
  - name: grant_type
    required: true
    value: client_credentials
  - name: client_id
    required: true
  - name: client_secret
    required: true
  - name: scope
    required: false
    description: Space-separated permissions list.
  - name: account_id
    required: false
    description: Business unit MID. "For server-to-server integrations that use the client credentials flow, specify the MID in the account_id parameter of your v2/token request."
token_response:
  fields:
  - name: access_token
    description: Acts as a session ID that the application uses to make requests. Max 512 characters.
  - name: token_type
    value: Bearer
  - name: expires_in
    value: 1080
    description: '"The value has the value 1080, representing 1,080 seconds, or 18 minutes." The real token lifetime is 20 minutes; expires_in is deliberately reported short so a client refreshes before
      expiry.'
  - name: rest_instance_url
    description: The REST API base URL for this tenant. Use this rather than constructing the host.
  - name: soap_instance_url
    description: The SOAP API base URL for this tenant.
  - name: scope
    description: The permission values actually assigned to the token.
request_header: 'Authorization: Bearer <access_token>'
tenancy:
  subdomain_required: true
  subdomain_source: Marketing Cloud Setup > Apps > Installed Packages
  note: Auth, REST and SOAP each live on a different tenant host ({subdomain}.auth / .rest / .soap .marketingcloudapis.com). There is no global host.
authorization_model:
  scope_grant: installed-package
  runtime_scope_request: false
  note: Scopes are assigned to the Installed Package by an administrator and are fixed for that integration. The scope parameter on the token request can only narrow what the package already holds; it cannot
    request anything new. A 403 with an errorcode in the 20000 class is therefore an administrative problem, not a client one — it cannot be resolved in code.
  artifact: scopes/salesforce-marketing-cloud-scopes.yml
mcp_authentication:
  differs: true
  model: OAuth 2.0 authorization code with PKCE (S256), dynamic client registration
  note: The MCE MCP server does NOT use the marketingcloudapis.com auth host. It runs its own authorization server with RFC 8414 metadata, an RFC 7591 registration endpoint and PKCE. See mcp/salesforce-marketing-cloud-mcp.yml
    and well-known/salesforce-marketing-cloud-oauth-authorization-server.json.
legacy:
  v1_endpoint: https://{subdomain}.auth.marketingcloudapis.com/v1/requestToken
  status: superseded
  note: The legacy ExactTarget token service. New integrations use v2.
docs_pages:
  overview: https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/authentication.html
  integration_types: https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/integration-considerations.html
  server_to_server: https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/access-token-s2s.html
  scopes: https://developer.salesforce.com/docs/marketing/marketing-cloud/references/mc_rest_rest_permission_scopes/rest-permissions-and-scopes.html

Work with this as data

Every security artifact here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for security posture

4 MCP tools reach this
  • find_securityBrowse and filter every security artifact in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/salesforce-marketing-cloud-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.