Hint Health · Authentication Profile

Hint Health Authentication

Authentication

Hint is a single-mechanism API: a bearer token in the Authorization header, on every operation, with no OAuth scopes and no OIDC. What varies is WHICH token, and getting that wrong is the highest-consequence mistake on this API — the partner key and the practice access token address different surfaces, and using the partner key against /api/provider/* crosses practice boundaries.

Hint Health secures its APIs with http and apiKey across 2 declared security schemes, as derived from its OpenAPI definitions.

Direct Primary CareDPCHealthcareMembership ManagementPatient EnrollmentMedical BillingEMRHealth Plans
Methods: http, apiKey Schemes: 2 OAuth flows: API key in: header

Security Schemes

BearerAuth http
scheme: bearer
hint_api_key apiKey
· in: header (AUTHORIZATION)

Source

Authentication Profile

Raw ↑
generated: '2026-08-15'
method: searched
source: https://developers.hint.com/reference/making-requests
docs:
  - https://developers.hint.com/reference/making-requests
  - https://developers.hint.com/docs/setting-up-your-sandbox-account-api-keys
  - https://developers.hint.com/docs/integration-activation
  - https://developers.hint.com/docs/roles-and-access-context
name: Hint Health Authentication
description: >-
  Hint is a single-mechanism API: a bearer token in the Authorization header, on
  every operation, with no OAuth scopes and no OIDC. What varies is WHICH token,
  and getting that wrong is the highest-consequence mistake on this API — the
  partner key and the practice access token address different surfaces, and using
  the partner key against /api/provider/* crosses practice boundaries.

summary:
  types: [http, apiKey]
  api_key_in: [header]
  oauth2_flows: []
  scopes_published: false
  openid_connect: false
  mtls: false

schemes:
  - name: BearerAuth
    type: http
    scheme: bearer
    header: 'Authorization: Bearer <token>'
    standard: RFC 6750
    description: >-
      The form documented on "Making Requests" and applied to every operation in
      the 49 refined specs in openapi/.
    sources: [openapi/*.yml]
  - name: hint_api_key
    type: apiKey
    in: header
    parameter: AUTHORIZATION
    description: >-
      The scheme Hint's OWN published OpenAPI declares — an apiKey in the
      AUTHORIZATION header whose description instructs callers to send
      "Bearer {your_api_key}". Functionally identical to the above; recorded
      separately because it is what the provider's document actually says.
    sources: [openapi/_original/hint-health-partner-endpoints-2026-07-01-openapi.yml]
    note: >-
      A tooling nit with a real cost: declaring RFC 6750 bearer auth as an apiKey
      scheme means generated clients and gateways will not recognise it as bearer
      auth, and no `bearerFormat` is advertised.

token_types:
  - name: Practice access token
    surface: /api/provider/*
    scope: one practice
    issued_by: >-
      POST /api/partner/installations/connect (or the older POST /oauth/tokens),
      exchanging the authorization code Hint hands over at install time. The
      credential is returned in api_keys[0].token.
    lifetime: >-
      No expiry is published — Hint's own connect example returns expires_in null
      and refresh_token null. Treat the token as long-lived and rotate it through
      the installation API keys endpoints rather than by refresh.
    guidance: >-
      This is the ONLY token that may touch practice data. Hint states plainly
      that using the partner key here leaks across practices.
  - name: Partner API key
    surface: /api/partner/*
    scope: the whole partner account
    issued_by: The Hint Partner Portal, and manageable via /partner/api_keys.
    env_var: HINT_API_KEY
    guidance: >-
      Marketplace, product listing, installation, backend and webhook-endpoint
      administration only.

environments:
  selector: key prefix, not host
  detail: >-
    A key prefixed `sbx-` returns sandbox data; an unprefixed key returns live
    data. api.hint.com serves BOTH, so promoting an integration from sandbox to
    live requires no host change. Partner identifiers carry the same prefix —
    ptr-... live, sbx-ptr-... sandbox.
  hosts:
    - {name: production, url: 'https://api.hint.com', key_prefix: none}
    - {name: sandbox, url: 'https://api.sandbox.hint.com', key_prefix: 'sbx-'}
    - {name: staging, url: 'https://api.staging.hint.com', key_prefix: 'sbx-'}

authorization_model:
  scopes: none
  detail: >-
    There is no scope parameter, no scope registry and no per-endpoint permission
    grant. Authorization is entirely a function of which token family you hold and
    which practice it was issued for. derive-oauth-scopes.py finds 0 oauth2
    schemes and 0 scopes across all 49 specs, so no scopes/ artifact is emitted.
  roles:
    docs: https://developers.hint.com/docs/roles-and-access-context
    detail: >-
      Roles apply to USERS inside an embedded marketplace app, not to API tokens.
      Hint passes a partner role and an access_context on the app handshake, and
      apps are expected to handle Hint platform-support sessions differently — a
      user-level authorization signal that has no API-token equivalent.

webhook_authentication:
  direction: hint-to-partner
  mechanism: HMAC-SHA256 signature
  header: X-Hint-Signature
  format: 'sha256=<hmac>'
  signed: raw request body
  key_source: Partner Portal → Webhooks Signature Key (HINT_WEBHOOK_SECRET on hosted deploys)
  see_also: asyncapi/hint-health-webhooks.yml

embedded_app_authentication:
  mechanism: signed handshake + server-minted session key
  detail: >-
    Marketplace apps receive a signed payload at POST /hint/handshake (same
    X-Hint-Signature HMAC), verify it, mint their own session key, and use it on
    subsequent surface renders. The Hint API token is never exposed to the browser.
  see_also: components/hint-health-components.yml

discovery:
  well_known: none
  detail: >-
    No /.well-known/openid-configuration, /.well-known/oauth-authorization-server
    or /.well-known/oauth-protected-resource is served on any Hint host — all 404.
    An agent cannot discover how to authenticate; it must read the docs.
  see_also: well-known/hint-health-well-known.yml

gaps:
  - No token expiry, refresh flow or rotation policy is documented.
  - No scopes, so an integration that needs read-only access cannot be granted it.
  - >-
    Bearer auth is declared as an apiKey scheme in the provider's own OpenAPI, so
    the machine-readable contract understates the auth model.

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/hint-health-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.