Healthie · Authentication Profile

Healthie Authentication

Authentication

Healthie secures its APIs with apiKey across 4 declared security schemes, as derived from its OpenAPI definitions.

API-FirstAppointmentsBillingCare PlansChartingClaimsClinicalDigital HealthEHREMRFormsGraphQLHealth TechHealthcareInsuranceIntakeOnline ProgramsPatient EngagementPatient PortalPractice ManagementProgramsSchedulingTelehealthWellnessWebhook
Methods: apiKey Schemes: 4 OAuth flows: API key in: header, query

Security Schemes

HealthieApiKey apiKey
· in: header ()
AuthorizationSource apiKey
· in: header ()
AuthorizationShard apiKey
· in: header ()
WebsocketToken apiKey
· in: query ()

Source

Authentication Profile

Raw ↑
generated: '2026-08-14'
method: searched
source: https://docs.gethealthie.com/guides/api-concepts/authentication
docs: https://docs.gethealthie.com/guides/api-concepts/authentication
note: >-
  Healthie publishes no OpenAPI, so this profile could not be produced by
  0-working/derive-authentication.py (which reads OpenAPI securitySchemes). It was read directly from
  the published authentication guide and cross-checked against the GraphQL schema captured in
  graphql/healthie-schema.graphql (the createApiKey mutation and ApiKey type exist verbatim).
summary:
  types: [apiKey]
  api_key_in: [header, query]
  oauth2_flows: []
  oauth2: false
  oidc: false
  mtls: false
  model: static per-user API key; permissions are inherited from the Healthie user account the key
    is attached to
schemes:
- name: HealthieApiKey
  type: apiKey
  in: header
  parameter_name: Authorization
  format: 'Basic <API_KEY>'
  required: true
  description: >-
    The API key is sent in the Authorization header using the literal scheme word "Basic" followed by
    the raw key. Despite the scheme name this is NOT HTTP Basic authentication — the value is the API
    key itself, not a base64 user:password pair.
  source: https://docs.gethealthie.com/guides/api-concepts/authentication
- name: AuthorizationSource
  type: apiKey
  in: header
  parameter_name: AuthorizationSource
  format: 'API'
  required: true
  description: >-
    Constant discriminator header that must accompany every authenticated API request. Distinguishes
    API-key traffic from Healthie's own first-party session traffic.
  source: https://docs.gethealthie.com/guides/api-concepts/authentication
- name: AuthorizationShard
  type: apiKey
  in: header
  parameter_name: AuthorizationShard
  format: '<SHARD_AUTHORIZATION_ID>'
  required: conditional
  description: >-
    Required only for customers whose data is hosted in a dedicated Healthie shard. The shard ID is
    not self-service — Healthie issues it on request to hello@gethealthie.com.
  source: https://docs.gethealthie.com/guides/api-concepts/authentication
- name: WebsocketToken
  type: apiKey
  in: query
  parameter_name: token
  format: 'wss://ws.gethealthie.com/subscriptions?token=<API_KEY>'
  required: true
  applies_to: GraphQL subscriptions over WebSocket
  description: >-
    The WebSocket protocol has no header phase, so Healthie carries the API key as a URL query
    parameter on the subscription connection. Note the security consequence: a long-lived PHI-bearing
    credential travels in a URL and is therefore exposed to proxy and connection logs in a way the
    header-based REST/GraphQL path is not.
  source: https://docs.gethealthie.com/guides/websockets-and-subscriptions/getting-started/
scopes:
  model: account-inherited
  oauth_scopes: false
  description: >-
    Healthie has no OAuth scope surface. An API key is scoped to exactly one Healthie user account
    and takes on that account's permissions and behaviours — actions performed with a key are
    attributed to that user in audit logs and notifications. Access is therefore narrowed by
    provisioning the underlying user account's role and permissions, not by requesting scopes.
  patterns:
  - name: service-account key
    description: One key tied to a purpose-built admin/service user account. Recommended by Healthie
      for backend and data-focused integrations.
  - name: per-user key
    description: >-
      A key per end user. Recommended by Healthie when building headless/custom user interfaces, so
      that audit logging, notifications and defaults mirror how Healthie's own front end behaves.
key_management:
  self_service: partial
  programmatic_issuance:
    mutation: createApiKey
    inputs:
    - name (optional, user-defined label)
    - user_id (required)
    returns:
    - api_key
    - 'api_key_object { id, displayable_key, created_at }'
    - 'messages { field, message }'
    verified_in: graphql/healthie-schema.graphql
    gate: >-
      Issuing keys for OTHER users must be enabled by Healthie per account — the docs direct
      integrators to contact hello@gethealthie.com to have it turned on.
  listing:
    queries: [apiKeys, apiKeysCount]
  multiple_keys_per_account: true
  rotation_policy_published: false
  expiry_published: false
gaps:
- No OAuth 2.0 or OpenID Connect. Third-party applications cannot obtain delegated, user-consented,
  scope-limited access to a practice's Healthie data — an integrator holds a full-permission
  long-lived key instead.
- No published key rotation or expiry policy, and no documented revocation endpoint beyond the
  account UI.
- No /.well-known/openid-configuration or /.well-known/oauth-authorization-server (both 404 — see
  well-known/healthie-well-known.yml).
- The API key doubles as the WebSocket credential and is placed in the query string.
x-evidence:
  fetched: '2026-08-14'
  urls:
  - {url: 'https://docs.gethealthie.com/guides/api-concepts/authentication', http_status: 200}
  - {url: 'https://docs.gethealthie.com/guides/websockets-and-subscriptions/getting-started/', http_status: 200}
  - {url: 'https://staging-api.gethealthie.com/graphql', http_status: 200, note: introspection confirming createApiKey/ApiKey}

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/healthie-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 email required.

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