Chainalysis · Authentication Profile

Chainalysis Authentication

Authentication

Authentication profile for the Chainalysis API surface, established by probing the live hosts rather than from a specification - Chainalysis publishes no anonymous OpenAPI (developers.chainalysis.com/openapi.json returns HTTP 401). Every Chainalysis API is API-key authenticated via a request header. No OAuth 2.0, OpenID Connect or mutual-TLS surface was found on any host, so no scopes/ artifact is emitted.

Chainalysis declares 3 security scheme(s) across its OpenAPI definitions.

ComplianceAMLKYTSanctionsInvestigationsBlockchain AnalyticsRiskCrypto
Methods: Schemes: 3 OAuth flows: API key in:

Security Schemes

X-API-Key apiKey
· in: header ()
Token apiKey
· in: header ()
Token apiKey
· in: header ()

Source

Authentication Profile

chainalysis-authentication.yml Raw ↑
generated: '2026-08-27'
method: probed
source: >-
  live unauthenticated + bad-credential probes of public.chainalysis.com and
  api.chainalysis.com, plus https://www.chainalysis.com/llms.txt
description: >-
  Authentication profile for the Chainalysis API surface, established by probing the live
  hosts rather than from a specification - Chainalysis publishes no anonymous OpenAPI
  (developers.chainalysis.com/openapi.json returns HTTP 401). Every Chainalysis API is
  API-key authenticated via a request header. No OAuth 2.0, OpenID Connect or mutual-TLS
  surface was found on any host, so no scopes/ artifact is emitted.
schemes:
  - id: sanctions_api_key
    type: apiKey
    in: header
    name: X-API-Key
    applies_to:
      - api: chainalysis:sanctions-screening
        base: https://public.chainalysis.com/api/v1
    registration: >-
      Free. Requested from the public sanctions screening product page; no commercial
      contract is required.
    registration_url: https://www.chainalysis.com/product/address-screening/
    evidence:
      - description: Request with NO credential
        url: https://public.chainalysis.com/api/v1/address/{address}
        http_status: 403
        body: WAF/Cloudflare HTML interstitial
      - description: Request with a well-formed but invalid UUID key in X-API-Key
        url: https://public.chainalysis.com/api/v1/address/{address}
        http_status: 401
        body: '{ "message":"Invalid API Key" }'
        note: >-
          The 401 with a JSON body proves X-API-Key is the credential header the service
          actually reads - an unauthenticated request never reaches the application.
  - id: kyt_token
    type: apiKey
    in: header
    name: Token
    applies_to:
      - api: chainalysis:kyt-api
        base: https://api.chainalysis.com/api/kyt/v2
    registration: Enterprise contract; key issued in the KYT console at kyt.chainalysis.com.
    confidence: medium
    evidence:
      - description: Unauthenticated request to a live KYT operation
        url: https://api.chainalysis.com/api/kyt/v2/users
        http_status: 403
        body: >-
          {"timestamp":"...","status":403,"error":"Forbidden","path":"/api/kyt/v2/users"}
    note: >-
      The header NAME could not be confirmed anonymously - the KYT reference is behind the
      customer login. The path is confirmed live: it returns a structured application-level
      403 rather than the host's 410 catch-all. Header name recorded at medium confidence
      and should be upgraded from an authenticated docs read.
  - id: risk_token
    type: apiKey
    in: header
    name: Token
    applies_to:
      - api: chainalysis:address-screening
        base: https://api.chainalysis.com/api/risk/v2
    registration: Enterprise contract.
    confidence: medium
    evidence:
      - description: Unauthenticated request to a live Address Screening operation
        url: https://api.chainalysis.com/api/risk/v2/entities
        http_status: 403
        body: >-
          {"timestamp":"...","path":"/api/risk/v2/entities","status":403,"error":"Forbidden",
          "requestId":"497459b3","message":"Invalid token"}
        note: >-
          The application's own message is literally "Invalid token", which is direct
          evidence that the credential is a bearer-style token supplied per request.
not_found:
  oauth2: >-
    No oauth2 securityScheme, no /.well-known/oauth-authorization-server (404 on
    www.chainalysis.com; SPA shell on reactor.chainalysis.com), no documented authorization
    or token endpoint. scopes/ is deliberately NOT emitted.
  openid_connect: >-
    No /.well-known/openid-configuration served on any host (404 / SPA shell).
  mutual_tls: Not documented and not offered on any probed host.
docs: https://developers.chainalysis.com/
docs_status: 401
docs_note: >-
  The Chainalysis developer portal is entirely behind a customer login. Every content path
  returns the literal body "User is not logged in" and /openapi.json returns
  {"error":"Unauthorized"}. The auth model above is therefore probed, not read.

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