AdvancedMD · Authentication Profile

Advancedmd Authentication

Authentication

The specs are thin — every FHIR document declares only a bare `bearerAuth` (http/bearer/JWT) scheme and says nothing about how that JWT is obtained. The real model is SMART-on-FHIR OAuth 2.0: three-legged authorization_code (with PKCE) for patient and practitioner apps, and SMART Backend Services client_credentials with an RS384 private_key_jwt assertion for Bulk Data. The legacy Application Access APIs use a separate api-key + session-token model.

AdvancedMD secures its APIs with oauth2, openIdConnect, apiKey, and http across 7 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode and clientCredentials flow(s).

HealthcareUnited StatesEHREMRPractice ManagementMedical BillingFHIRHL7SMART on FHIRUS CoreInteroperabilityRevenue Cycle ManagementScheduling
Methods: oauth2, openIdConnect, apiKey, http Schemes: 7 OAuth flows: authorizationCode, clientCredentials API key in: header

Security Schemes

SMART-on-FHIR OAuth 2.0 (three-legged) oauth2
SMART Backend Services (two-legged, Bulk only) oauth2
OpenID Connect openIdConnect
bearerAuth http
scheme: bearer
API Key apiKey
· in: header (apikey)
Bearer Token apiKey
· in: header (Authorization)
HTTP Basic (Bulk JWKS helper) http
scheme: basic

Source

Authentication Profile

Raw ↑
generated: '2026-07-27'
method: searched
source: >-
  Derived from the securityDefinitions/securitySchemes in
  openapi/advancedmd-application-access-apis-swagger.json,
  openapi/advancedmd-fhir-bulk-api-openapi.json and
  openapi/advancedmd-fhir-single-api-openapi.json, then upgraded from the provider's own
  documentation: https://fhir.advancedmd.com/fhir/launch-and-authorization,
  https://fhir.advancedmd.com/getting-started, https://fhir.advancedmd.com/fhir/bulk-api,
  and the live discovery documents at /v1/r4/.well-known/smart-configuration and
  /v1/r4/.well-known/openid-configuration.
docs: https://fhir.advancedmd.com/fhir/launch-and-authorization
description: >-
  The specs are thin — every FHIR document declares only a bare `bearerAuth` (http/bearer/JWT)
  scheme and says nothing about how that JWT is obtained. The real model is SMART-on-FHIR
  OAuth 2.0: three-legged authorization_code (with PKCE) for patient and practitioner apps,
  and SMART Backend Services client_credentials with an RS384 private_key_jwt assertion for
  Bulk Data. The legacy Application Access APIs use a separate api-key + session-token model.
summary:
  types: [oauth2, openIdConnect, apiKey, http]
  api_key_in: [header]
  oauth2_flows: [authorizationCode, clientCredentials]
  mtls: false
  two_legged_oauth_for_general_access: false
schemes:
  - name: SMART-on-FHIR OAuth 2.0 (three-legged)
    type: oauth2
    flow: authorizationCode
    authorizationUrl: https://providerapi.advancedmd.com/v1/oauth2/authorize
    tokenUrl: https://providerapi.advancedmd.com/v1/oauth2/token
    pkce: S256
    client_authentication: [client_secret_basic, private_key_jwt]
    token_lifetime_seconds: 3599
    refresh_token_lifetime_seconds: 7775999
    authorization_code_lifetime: about one minute
    context_returned: [patient, fhirUser, userId, aud, scope, need_patient_banner, smart_style_url]
    applies_to:
      - advancedmd:advancedmd-fhir-single-api
    sources:
      - fhir/advancedmd-smart-configuration.json
      - https://fhir.advancedmd.com/fhir/launch-and-authorization
    note: >-
      Used for patient- and provider-facing apps. Both standalone launch and EHR launch are
      supported (capabilities launch-standalone, launch-ehr, context-ehr-patient,
      context-ehr-encounter, authorize-post).
  - name: SMART Backend Services (two-legged, Bulk only)
    type: oauth2
    flow: clientCredentials
    tokenUrl: https://providerapi.advancedmd.com/v1/oauth2/token
    client_authentication: private_key_jwt
    assertion:
      client_assertion_type: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
      signing_alg: RS384
      header_claims: [alg, kid, typ, jku]
      body_claims: [iss, sub, aud, exp, jti]
      one_time_use: true
    additional_parameters: [username, password, officekey]
    scope: system/*.read
    token_lifetime: one hour
    applies_to:
      - advancedmd:advancedmd-fhir-bulk-api
    sources:
      - https://fhir.advancedmd.com/fhir/launch-and-authorization
    note: >-
      AdvancedMD states it does "not support two-legged OAuth for system-to-system
      interactions" generally — this flow exists only for FHIR Bulk Data Access.
  - name: OpenID Connect
    type: openIdConnect
    openIdConnectUrl: https://providerapi.advancedmd.com/v1/r4/.well-known/openid-configuration
    issuer: https://providerapi.advancedmd.com/v1/r4
    id_token_signing_alg_values_supported: [RS384, RS256]
    scopes: [openid, fhirUser]
    sources:
      - fhir/advancedmd-openid-configuration.json
  - name: bearerAuth
    type: http
    scheme: bearer
    bearerFormat: JWT
    sources:
      - openapi/advancedmd-fhir-bulk-api-openapi.json
      - openapi/advancedmd-fhir-single-api-openapi.json
    note: How the specs model the SMART access token. It is the transport, not the grant.
  - name: API Key
    type: apiKey
    in: header
    parameter: apikey
    applies_to:
      - advancedmd:advancedmd-application-access-apis
    sources:
      - openapi/advancedmd-application-access-apis-swagger.json
  - name: Bearer Token
    type: apiKey
    in: header
    parameter: Authorization
    applies_to:
      - advancedmd:advancedmd-application-access-apis
    sources:
      - openapi/advancedmd-application-access-apis-swagger.json
    note: >-
      Session token minted by POST /authenticate from a Patient Portal username, password
      and practice office key. Modelled as an apiKey rather than http/bearer in the Swagger.
  - name: HTTP Basic (Bulk JWKS helper)
    type: http
    scheme: basic
    applies_to:
      - advancedmd:advancedmd-fhir-bulk-jwks-api
    sources:
      - https://fhir.advancedmd.com/fhir/bulk-api
    note: Bulk application Key as username and Secret as password, for the test-only POST /v1/fhir-jwks/token endpoint.
endpoints:
  authorization: https://providerapi.advancedmd.com/v1/oauth2/authorize
  token: https://providerapi.advancedmd.com/v1/oauth2/token
  introspection: https://providerapi.advancedmd.com/v1/oauth2/introspect
  revocation: https://providerapi.advancedmd.com/v1/oauth2/revoke
  management: https://providerapi.advancedmd.com/v1/oauth2/manage
  jwks: https://providerapi.advancedmd.com/v1/oauth2/.well-known/jwks.json
  smart_configuration: https://providerapi.advancedmd.com/v1/r4/.well-known/smart-configuration
  openid_configuration: https://providerapi.advancedmd.com/v1/r4/.well-known/openid-configuration
onboarding:
  registration: Self-service developer + app registration at https://fhir.advancedmd.com
  approval: >-
    Manual — email InterOps@advancedmd.com with subject "FHIR App Approval Request for
    Appname: [Your Appname]" and your redirect URL. "It can take a few days."
  constraint: One product per application — a Single-patient app must not also request the Bulk or non-FHIR products.
  credentials: The app's Key is the client_id and its Secret is the client_secret.
  cost: Free for the certified FHIR APIs (Developer Terms of Service, last updated 2022-11-28).
scopes: scopes/advancedmd-scopes.yml
gated_surfaces:
  - name: Connect APIs (REST + XML-RPC) and ODBC driver
    auth: Not publicly documented — credentials issued under a signed Certified API Developer Agreement with licensing and support fees.

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