Drata · Authentication Profile

Drata Authentication

Authentication

Drata secures its APIs with http, apiKey, and oauth2 across 3 declared security schemes, as derived from its OpenAPI definitions.

GRCComplianceSOC 2ISO 27001SecurityRisk ManagementTrust CenterAuditVendor Risk ManagementCompliance Automation
Methods: http, apiKey, oauth2 Schemes: 3 OAuth flows: API key in: header

Security Schemes

bearer http
scheme: bearer
apiKey apiKey
· in: header (x-sb-api-key)
oauth2 oauth2
· flows:

Source

Authentication Profile

Raw ↑
generated: '2026-08-27'
method: searched
source: >-
  openapi/drata-api-v2-openapi.yml + openapi/drata-safebase-trust-api-openapi.yml +
  https://help.drata.com/en/articles/6695964-drata-public-api +
  https://developers.drata.com/developer-portal/v2/recipes/create-an-api-key/ +
  https://developers.drata.com/developer-portal/v2/recipes/mcp-oauth-setup/ +
  https://mcp.drata.com/.well-known/oauth-authorization-server
docs: https://help.drata.com/en/articles/6695964-drata-public-api
provider: Drata
providerId: drata
summary:
  types:
  - http
  - apiKey
  - oauth2
  api_key_in:
  - header
  note: >-
    Three different credentials across three surfaces, and they are not interchangeable: a
    bearer API key for the Public API v2, an x-sb-api-key header for the SafeBase Trust API,
    and OAuth for the MCP server. An agent spanning Drata's surfaces needs all three.

schemes:
- name: bearer
  type: http
  scheme: bearer
  bearerFormat: API_KEY
  surface: Drata Public API v2
  header: 'Authorization: Bearer <API_KEY>'
  sources:
  - openapi/drata-api-v2-openapi.yml
  note: >-
    Despite the bearer scheme, the credential is a long-lived API key, not a JWT — the spec's
    own bearerFormat says "API_KEY". Applied globally via a root-level security requirement,
    so every one of the 197 operations requires it.

- name: apiKey
  type: apiKey
  in: header
  parameter: x-sb-api-key
  surface: SafeBase Trust API
  sources:
  - openapi/drata-safebase-trust-api-openapi.yml

- name: oauth2
  type: oauth2
  surface: Drata MCP server
  flows:
    authorizationCode:
      authorizationUrl: https://mcp.drata.com/auth0-proxy/authorize
      tokenUrl: https://drata-prod.us.auth0.com/oauth/token
      refreshUrl: https://drata-prod.us.auth0.com/oauth/token
      pkce: [S256, plain]
  issuer: https://drata-prod.us.auth0.com/
  dynamic_client_registration: https://drata-prod.us.auth0.com/oidc/register
  revocation_endpoint: https://drata-prod.us.auth0.com/oauth/revoke
  metadata:
    protected_resource: https://mcp.drata.com/.well-known/oauth-protected-resource
    authorization_server: https://mcp.drata.com/.well-known/oauth-authorization-server
    openid_configuration: https://mcp.drata.com/.well-known/openid-configuration
  scopes: scopes/drata-scopes.yml
  sources:
  - https://mcp.drata.com/.well-known/oauth-authorization-server
  note: >-
    Discoverable without credentials via RFC 9728 / RFC 8414 metadata, which is what lets an
    MCP client bootstrap the connection with no prior configuration.

api_key_management:
  where: Drata app -> Settings -> API Keys
  creation_docs: https://developers.drata.com/developer-portal/v2/recipes/create-an-api-key/
  shown_once: true
  quote: >-
    "The full API key will only be shown once when you create the key. You will not be able to
    access it again."
  attributes:
  - name: Name
    mutable: false
    note: Cannot be changed once the key is active.
  - name: Expiration date
    options: [12 months (default), Never, Custom]
  - name: Allowed IP Addresses
    note: >-
      Optional source-IP allowlist. Empty means all sources. Interacts with the per-source-IP
      rate limit — pinning a key to one egress IP also pins it to one 500/min budget.
  - name: Access / scopes
    options: [Custom, All read, All read and write]
    note: >-
      "All read" and "All read and write" enable all CURRENT AND FUTURE scopes — a forward
      grant that silently widens as Drata ships new endpoints. Prefer Custom for agents.
  statuses:
  - name: Active
    description: Usable for the scopes it was provisioned for.
  - name: Expires soon
    description: Still usable; expires within 30 days.
  - name: Expired
    description: Unusable. Permanent — an expired key cannot be reactivated.
  - name: Revoked
    description: Unusable. Permanent — revocation cannot be undone.
  observability: >-
    The key table shows name, status, creator, last-used timestamp and expiry. Last-used is the
    only usage telemetry Drata exposes for a key.
  rotation_note: >-
    Scopes can be edited at any time on a key that has not expired or been revoked, but the key
    VALUE cannot be rotated in place — rotation means creating a new key and revoking the old
    one, and revocation is irreversible.

tenant_gate:
  status: 412
  description: >-
    All 196 authenticated operations declare a 412 response: "You must accept the Drata terms
    and conditions to use the API." A valid, correctly scoped key still fails until a Drata
    administrator accepts the API terms in the app. Treat 412 as a human-escalation, not a
    credential problem.

entitlement_gate:
  status: 402
  operations: 37
  description: >-
    "You must upgrade your plan to use this feature" / "The required account entitlement is not
    enabled." Distinct from 403 — widening scopes will never clear a 402.

authorization_model:
  layers:
  - Credential scopes (API key scopes, or MCP OAuth scopes)
  - Drata role-based permissions on the authenticated user
  - Workspace scoping via the {workspaceId} path parameter
  rule: >-
    Effective access is the INTERSECTION of the granted scopes and the caller's Drata role.
    Granting a scope never widens what a user can reach.
  source: https://developers.drata.com/developer-portal/v2/recipes/mcp-oauth-setup/

evidence:
- url: https://help.drata.com/en/articles/6695964-drata-public-api
  status: 200
- url: https://developers.drata.com/developer-portal/v2/recipes/mcp-oauth-setup/
  status: 200
- url: https://mcp.drata.com/.well-known/oauth-authorization-server
  status: 200
- url: https://public-api.drata.com/public/v2/openapi.json
  status: 401
  note: 'Unauthenticated probe of the API host returns {"statusCode":401,"message":"Unauthorized","code":26430}.'

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