Shopify · Authentication Profile

Shopify Authentication

Authentication

Shopify secures its APIs with apiKey, oauth2, and openIdConnect across 5 declared security schemes, as derived from its OpenAPI definitions.

CommerceE-CommercePaymentsRetailShopping CartT1
Methods: apiKey, oauth2, openIdConnect Schemes: 5 OAuth flows: API key in: header

Security Schemes

AccessToken apiKey
· in: header (X-Shopify-Access-Token)
StorefrontAccessToken apiKey
· in: header (X-Shopify-Storefront-Access-Token)
CustomerAccountOAuth oauth2
AgentClientCredentials oauth2
· flows: , ,
None (anonymous) none

Source

Authentication Profile

Raw ↑
generated: '2026-08-27'
method: searched
source: >-
  https://shopify.dev/docs/apps/build/authentication-authorization,
  https://shopify.dev/docs/api/usage/access-scopes.md (HTTP 200),
  https://shopify.dev/docs/api/usage/response-codes.md (HTTP 200),
  https://api.shopify.com/.well-known/oauth-authorization-server (HTTP 200),
  https://catalog.shopify.com/.well-known/oauth-protected-resource (HTTP 200),
  https://shopify.dev/docs/apps/build/storefront-mcp/servers/customer-account.md (HTTP 200)
  — all fetched 2026-08-27. Supersedes the 2026-07-11 derived profile, which read only the
  Admin REST OpenAPI and therefore saw one apiKey scheme where five distinct schemes exist.
docs: https://shopify.dev/docs/apps/build/authentication-authorization
provider: Shopify
providerId: shopify
summary:
  types:
  - apiKey
  - oauth2
  - openIdConnect
  api_key_in:
  - header
  versioned: false
  versioning_note: >-
    The OAuth endpoints — including AccessScope — are explicitly listed as UNVERSIONED. They can
    change at any time, with no deprecation window, while every API they authorize is versioned
    quarterly.
schemes:
- name: AccessToken
  type: apiKey
  in: header
  parameter: X-Shopify-Access-Token
  api: Admin REST API, GraphQL Admin API
  description: Access token obtained via the OAuth authorization code grant or token exchange.
  sources:
  - openapi/_original/shopify-admin-rest-api-openapi.yml
  - https://shopify.dev/docs/apps/build/authentication-authorization
- name: StorefrontAccessToken
  type: apiKey
  in: header
  parameter: X-Shopify-Storefront-Access-Token
  api: Storefront API
  description: >-
    Public or private storefront access token. Server-side requests with a private token must also
    send the correct Buyer IP header or risk a 430 Shopify Security Rejection.
  sources:
  - https://shopify.dev/docs/api/storefront
- name: CustomerAccountOAuth
  type: oauth2
  flow: authorization_code with PKCE
  api: Customer Account API, Customer Accounts MCP
  discovery: https://{shop-domain}/.well-known/openid-configuration
  description: >-
    Per-customer authorization. A 401 from the Customer Accounts MCP server is the documented signal
    to start the flow. Requires a custom domain on the store and Level 2 protected customer data
    approval from the Partner Dashboard.
  sources:
  - https://shopify.dev/docs/apps/build/storefront-mcp/servers/customer-account
- name: AgentClientCredentials
  type: oauth2
  flows: [client_credentials, 'urn:shopify:params:oauth:grant-type:ecp-credentials', 'urn:ietf:params:oauth:grant-type:jwt-bearer']
  issuer: https://api.shopify.com
  token_url: https://api.shopify.com/auth/access_token
  token_endpoint_auth_methods: [client_secret_post]
  api: UCP Catalog / Cart / Checkout MCP
  description: >-
    Agent authorization for the UCP surfaces. Buys the token tier — the highest rate limits, and the
    only tier that can call complete_checkout. Metadata is served per RFC 8414 at
    https://api.shopify.com/.well-known/oauth-authorization-server, with the protected resource
    declared per RFC 9728 at https://catalog.shopify.com/.well-known/oauth-protected-resource.
  sources:
  - well-known/shopify-api-oauth-authorization-server.json
  - well-known/shopify-catalog-oauth-protected-resource.json
  - https://shopify.dev/docs/agents/carts-and-checkout/checkout-mcp
- name: None (anonymous)
  type: none
  api: Global Catalog MCP, Storefront MCP, mock.shop
  description: >-
    Genuinely anonymous surfaces. https://catalog.shopify.com/api/ucp/mcp answered a tools/list with
    no credential at all (HTTP 200, verified 2026-08-27), the per-store Storefront MCP endpoints are
    documented as requiring no authentication, and https://mock.shop/api answers full GraphQL
    introspection unauthenticated. Anonymous callers get the lowest rate-limit tier and cannot reach
    Checkout MCP.
  sources:
  - mcp/shopify-catalog-mcp-tools.json
  - https://shopify.dev/docs/apps/build/storefront-mcp/servers/storefront
token_lifetimes:
  note: >-
    Non-expiring offline access tokens are being retired. From 2027-01-01 an Admin API request
    presenting a public app's non-expiring offline access token returns 403 with the message
    "Non-expiring access tokens are no longer accepted for the Admin API".
  docs: https://shopify.dev/docs/apps/build/authentication-authorization/migrate-to-expiring-offline-access-tokens
failure_signals:
  '401': Missing, incorrect or expired credentials. A 401 carrying invalid_request with "This request requires an active refresh_token" is FINAL — do not retry.
  '403': Missing scope. From 2027-01-01, also a non-expiring offline token on the Admin API.
  '430': Shopify Security Rejection — often a server-side Storefront request without the Buyer IP header.
scopes:
  cross_reference: scopes/shopify-scopes.yml
  count: 137
  families: [authenticated, unauthenticated, customer]

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/shopify-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.