Aetna · Authentication Profile
Aetna Authentication
Authentication
Aetna secures its APIs with oauth2 across 2 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode and clientCredentials flow(s).
Health InsuranceHealthcareFHIRPatient AccessProvider DirectoryDrug FormularyPrior AuthorizationCMS InteroperabilitySMART on FHIRCARIN Blue ButtonDa VinciPayerFortune 100CVS Health
Methods: oauth2
Schemes: 2
OAuth flows: authorizationCode, clientCredentials
API key in:
Security Schemes
FHIR_Patient_Allergy_Read_AccessCode_Oauth oauth2
· flows: authorizationCode
FHIR_Application_Oauth oauth2
· flows: clientCredentials
Source
Authentication Profile
generated: '2026-08-30'
method: searched
source: openapi/aetna-*-openapi.yml (derived baseline from Aetna's 95 published Swagger documents), upgraded
from https://apif1.aetna.com/fhir/.well-known/smart-configuration (HTTP 200), https://vteapif1.aetna.com/fhirdemo/.well-known/smart-configuration
(HTTP 200), https://apif1.aetna.com/fhir/v2/patientaccess/metadata, https://apif1.aetna.com/fhir/v1/providerdirectory/metadata,
https://developerportal.aetna.com/managedcontent/pdfs/Token_Generation_Process-Patient_Access_APIs-Production.pdf,
https://developerportal.aetna.com/assets/Data/createapp.json
summary:
types:
- oauth2
oauth2_flows:
- authorizationCode
- clientCredentials
schemes:
- name: FHIR_Patient_Allergy_Read_AccessCode_Oauth
type: oauth2
flows:
- flow: authorizationCode
scopes: 4
sources:
- openapi/aetna-patient-access-api-openapi.yml
- openapi/aetna-patient-access-api-sandbox-openapi.yml
- openapi/aetna-provider-directory-api-openapi.yml
- name: FHIR_Application_Oauth
type: oauth2
flows:
- flow: clientCredentials
tokenUrl: https://$(catalog.url)/v3/internal/auth/oauth2/app/token
scopes: 2
description: "{\n \"BuildEieHeader\" : \"Header 3.2\",\n \"SecurityTemplate\" : \"FHIROpenApp\",\n \"Backend\"\
\ : \"Non-IIB, FHIRServer APIGEE APIs, requires Mutual TLS\",\n \"Errorhandlingpolicy\": \"Transparent\"\
\n \"Consumer\":\"External\",\n \"Mutual Auth between Consumer and APIC\" : \"Not Required\"\n}"
sources:
- openapi/aetna-provider-directory-api-openapi.yml
docs: https://apif1.aetna.com/fhir/.well-known/smart-configuration
profile: SMART App Launch 1.0.0 over OAuth 2.0 authorization code with PKCE
endpoints:
production:
authorize: https://apif1.aetna.com/fhir/prod/v1/fhirserver_auth/oauth2/authorize
token: https://apif1.aetna.com/fhir/prod/v1/fhirserver_auth/oauth2/token
discovery: https://apif1.aetna.com/fhir/.well-known/smart-configuration
sandbox:
authorize: https://vteapif1.aetna.com/fhirdemo/v1/fhirserver_auth/oauth2/authorize
token: https://vteapif1.aetna.com/fhirdemo/v1/fhirserver_auth/oauth2/token
discovery: https://vteapif1.aetna.com/fhirdemo/.well-known/smart-configuration
discrepancy_note: Aetna publishes two different paths for the same endpoints. The live smart-configuration
documents give /fhir/prod/v1/fhirserver_auth/... ; the CapabilityStatements and Aetna's own Token Generation
PDF give /fhir/v1/fhirserver_auth/... . Both are recorded as served. A client should read the smart-configuration
at runtime rather than hard-coding either.
client_authentication: client_secret_basic (Client ID and Secret sent as an HTTP Basic header)
pkce:
required_for: public clients
code_challenge_methods_supported:
- S256
anonymous_access:
available: false
note: 'Nothing in Aetna''s API surface is callable anonymously. Even the provider directory, which carries
no member data and which several peer payers expose openly, declares oauth2 on every operation. Two things
ARE anonymously readable and are the only unauthenticated surface: the two FHIR CapabilityStatements at
/metadata and the two smart-configuration documents.'
registration:
model: portal registration, then per-application, then per-product subscription
portal: https://developerportal.aetna.com/
applicant_types:
- third-party developer application
- payer (payer-to-payer data exchange)
- EHR application
- provider system
- ECS Provider organization (added 2026-08-19)
note: A call to a product the application is not subscribed to returns 401, per Aetna's own error reference.
Production applications go through a review, not a purchase; the production-access mailbox is AetnaInteroperabilityProductionAccess@AETNA.com.
identity_assurance:
ial2_supported: true
since: '2026-06-25'
credential_service_providers:
- CLEAR
- ID.me
standard: NIST SP 800-63A Identity Assurance Level 2
note: Optional. The alternative Aetna calls "Well-Known Authentication" uses the member's Aetna username
and password. IAL2 applications cannot use the Sandbox environment.
spec_template_warning: Every published Swagger declares its oauth2 tokenUrl/authorizationUrl as the un-substituted
IBM API Connect template https://$(catalog.url)/... - a literal placeholder, not a URL. Any tool that generates
a client straight from Aetna's Swagger will emit a broken auth configuration. The endpoints block above carries
the real values.
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.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/aetna-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.