Getting Started
Once successfully onboarded (see Onboarding), download the OpenAPI specification from the Overview page and use the starter collections provided in this developer portal to begin testing. This guide replaces the older shared Postman workspace flow, which is no longer maintained.
This page is the developer quickstart.
Use it for:
- first API calls
- headers and IDs you must persist
- starter Postman and Insomnia flows
- basic client-generation workflow
Do not use this page for product onboarding, clearinghouse ownership, feature enrollment approvals, or callback payload interpretation details. For those topics, see Onboarding for Providers & Channel Partners, Developer Onboarding, and Customer Callback Example API.
Choose a Starting Path
Use the option that best matches how your team works:
curlfor the fastest first request- Postman for an importable collection with automatic bearer-token retrieval
- Insomnia for an alternative desktop client workflow
- OpenAPI Generator for SDK wrappers and typed client code
Portal Resources
- OpenAPI specification: download it from the OpenAPI button on the Overview page
- Postman collection: copy the raw JSON block from this guide into Postman
- Postman Sandbox environment: copy the raw JSON block from this guide into Postman
- Postman Production environment: copy the raw JSON block from this guide into Postman
- Insomnia export: copy the raw JSON block from this guide into Insomnia
Before You Test
You will need:
- Optum-issued
client_id - Optum-issued
client_secret - Your target base URL
- Sandbox:
https://sandbox-apigw.optum.com - Production:
https://apigw.optum.com
- Sandbox:
- Optional
x-optum-subtenant-idonly when Optum has explicitly assigned one to you
Protected Health Information (PHI) must not be transmitted or stored in the Sandbox environment.
Integration Decision Points
Before you build your first client, make these decisions:
- Use
POST /rcm/eligibility/v1for normalized JSON requests orPOST /rcm/eligibility/v1/real-time/x12for JSON request bodies withx12set to the X12 270 payload - Decide whether your implementation needs real-time eligibility only, or real-time eligibility with integrated Coverage Discovery
- Decide whether you will receive Coverage Discovery results by callback, polling, or both
- Decide whether your client ever needs to send
x-optum-subtenant-id - Decide whether you need enrolled value-added behavior disabled in any request path using
x-optum-eligibility-disable-value-add
If you are considering direct Coverage Discovery:
- treat it as an advanced pattern rather than the normal starting path
- prefer
POST /rcm/eligibility/v1/coverage-discovery/x12if you already have the processedx12-270andx12-271 - use
POST /rcm/eligibility/v1/coverage-discoveryonly if you already have the canonical eligibility request and, when needed, canonical eligibility response models
Request and Response Cheat Sheet
| Item | Where | When to use it | Why it matters |
|---|---|---|---|
Authorization: Bearer <token> | Request header | Every API call except token acquisition | Authenticates the request |
x-optum-correlation-id | Request header | Recommended on every request | Lets your application and Optum support tie later records back to the original request |
x-optum-subtenant-id | Request header | Only when Optum explicitly assigned one | Activates customer-specific configuration |
x-optum-tenant-id | Response header | Every response | Confirms tenant context |
x-optum-trace-id | Response header | Every response | Primary support trace key |
link | Response header | Real-time responses that trigger integrated Coverage Discovery, list endpoints with pagination | Contains related discovery resources or pagination links |
location | Response header | Direct Coverage Discovery 202 Accepted responses | Contains the created discovery task resource |
x-total-count | Response header | List queries when count is returned | Helps operational reporting and pagination |
What Your Application Should Persist
At a minimum, store:
- Your original
x-optum-correlation-id - The returned transaction
id - Any discovery task id obtained from a
linkorlocationheader x-optum-trace-id- The environment used for the request
x-optum-subtenant-idwhen applicable- Request timestamp and payer ID
This data materially reduces support turnaround time and lets your application safely correlate asynchronous discovery results.
Status Meanings
Real-time transaction statuses commonly include:
eligible: active coverage was returnedineligible: the payer responded but coverage was not active for the requested contextpatient_unknown: the payer could not match the submitted member detailspayer_unavailable: the payer or upstream dependency could not be reached successfullyprocessing_error: the request could not be completed due to a processing problem
Coverage Discovery task statuses are:
pending: the task has been created but is not finalizedsuccess: at least one discovery outcome completed successfullyfailure: the task completed without a successful discovery outcome
Response Time Expectations
Developers should plan for materially different timing profiles between Real-Time Eligibility and Coverage Discovery.
Real-Time Eligibility
Real-Time Eligibility depends on payer and clearinghouse response time.
Important behavior:
- the downstream clearinghouse timeout is 2 minutes
- that timeout exists to allow for slower payer connectivity and heavier traffic periods such as the first or last day of the month
- payer response time is the main driver of end-to-end RTE latency
- Enhanced Eligibility platform touch time is much smaller than total payer-facing latency
Current RTE metrics:
- end-to-end
p95: 20.7 seconds - end-to-end
p99: 30.6 seconds - Enhanced Eligibility touch time
p95: 91.3 ms - Enhanced Eligibility touch time
p99: 171 ms
Coverage Discovery
Coverage Discovery is asynchronous. Discovery paths and add-ons are enabled per customer and are not included automatically.
Customers who are highly sensitive to response time should understand:
- Coverage Discovery is intentionally async for this reason
- the non-Coverage-Insight paths are near-real-time relative to traditional discovery workflows
- customers primarily concerned with strict turnaround should avoid enrolling in Coverage Insight
Quick Test With curl
This is the fastest way to confirm that your credentials work and that you can submit a real-time eligibility request.
1. Get an access token
export BASE_URL="https://sandbox-apigw.optum.com"
export CLIENT_ID="<your-client-id>"
export CLIENT_SECRET="<your-client-secret>"
ACCESS_TOKEN=$(
curl -sS \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
"$BASE_URL/apip/auth/v2/token" | jq -r '.access_token'
)
2. Submit a real-time JSON eligibility request
curl -sS \
-X POST "$BASE_URL/rcm/eligibility/v1" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "x-optum-correlation-id: quickstart-001" \
-d '{
"controlNumber": "123456789",
"tradingPartnerServiceId": "AETNA",
"provider": {
"organizationName": "Example Medical Center",
"npi": "0123456789"
},
"informationReceiverName": {
"address": {
"state": "TX"
}
},
"subscriber": {
"memberId": "SUB123",
"firstName": "JOHN",
"lastName": "DOE",
"dateOfBirth": "19500102",
"ssn": "111223333",
"additionalIdentification": {
"patientAccountNumber": "PAN-1001"
},
"address": {
"address1": "123 Main St",
"city": "Dallas",
"state": "TX",
"postalCode": "75001"
}
},
"encounter": {
"dateOfService": "20250115",
"serviceTypeCodes": ["30"]
}
}'
3. Save the returned transaction id
idUse the returned id with:
GET /rcm/eligibility/v1/transactions/{id}GET /rcm/eligibility/v1/transactions
If Coverage Discovery is enabled for your tenant, also inspect the HTTP link response header for related discovery task resources.
Persist both the transaction id and the response x-optum-trace-id. If a link header is returned, also persist each related discovery task id immediately.
4. Inspect sourceType on transaction responses
sourceType on transaction responsesTransaction metadata can help you understand how a record was created and whether prior-result reuse affected the request. Use the transaction response details when you need to investigate request history.
Postman
Use the included collection when you want a ready-made test harness that handles token acquisition for you.
What the included collection does
- Retrieves and refreshes the bearer token automatically before requests run
- Uses the OAuth2 client credentials flow against
/apip/auth/v2/token - Stores
transaction_idfrom real-time responses - Stores
discovery_idfrom Coverage Discovery receipts when alocationheader is returned - Includes starter requests for the most common real-time, transaction, discovery, and healthcheck flows
Import steps
- Open Postman.
- Click
Import. - Choose
Raw text. - Copy the raw JSON for the Postman collection and paste it into the import window.
- Import one environment the same way by pasting the raw JSON for:
- the Sandbox environment
- or the Production environment
- Complete the import.
- In the imported environment, populate:
client_idclient_secret
- Leave
subtenant_idblank unless Optum explicitly instructed you to send it. - Select the imported environment and send a request.
Recommended Postman flow
Eligibility Requests / Submit Eligibility (JSON)Eligibility Transactions / Get Transaction By IdEligibility Transactions / Get All Transactions- If enabled,
Coverage Discovery / Submit Discovery Dry Run (JSON) - If a discovery task is created,
Coverage Discovery / Get Discovery By Id
Notes
- The collection uses collection variables for token caching. In normal use, you should not need to fetch a token manually.
- If you switch between Sandbox and Production, select the correct environment before sending the next request.
x-optum-subtenant-idis included as an optional variable-driven header. Do not populate it unless you were told to do so.
Insomnia
Use Insomnia if your team prefers it over Postman. The included export gives you the same core request set as the Postman collection.
Import steps
- Open Insomnia.
- Click
CreateorImport. - Choose the option to import from clipboard, raw text, or pasted JSON.
- Copy the raw JSON for the Insomnia export and paste it into the import dialog.
- Complete the import.
- Update the base environment values:
base_urlclient_idclient_secret- optional
subtenant_id
Authentication behavior
The included export is configured for OAuth 2.0 client credentials against:
{{ _.base_url }}/apip/auth/v2/token
If your Insomnia version does not preserve OAuth settings exactly on import, use either of these fallbacks:
- Import the downloaded OpenAPI specification directly into Insomnia and configure OAuth 2.0 client credentials once.
- Copy one request from the included export, then set:
- Grant Type:
Client Credentials - Access Token URL:
{{ _.base_url }}/apip/auth/v2/token - Client ID:
{{ _.client_id }} - Client Secret:
{{ _.client_secret }}
- Grant Type:
Recommended Insomnia flow
Submit Eligibility (JSON)- Copy the returned transaction
id Get Transaction By Id- If enrolled in Coverage Discovery, run a dry run first
Generate SDK Wrappers With OpenAPI Generator
If your team wants typed client wrappers in code instead of calling raw HTTP directly, download the OpenAPI specification from the Overview page.
Option A: openapi-generator-cli
openapi-generator-cliInstall or use an existing local installation of OpenAPI Generator, then run:
openapi-generator-cli generate \
-i <downloaded-openapi-file> \
-g typescript-fetch \
-o generated/typescript-fetch
Option B: npx
npxnpx @openapitools/openapi-generator-cli generate \
-i <downloaded-openapi-file> \
-g python \
-o generated/python
Option C: Docker
docker run --rm \
-v "${PWD}:/local" \
openapitools/openapi-generator-cli generate \
-i /local/<downloaded-openapi-file> \
-g java \
-o /local/generated/java
Common generator targets
typescript-fetchtypescript-axiospythonjavacsharpgo
Recommended wrapper workflow
- Generate into a dedicated
generated/directory. - Wrap the generated client with your own thin service layer for:
- retries
- logging
- correlation-id generation
- optional subtenant header injection
- Regenerate from the spec when the API changes instead of hand-editing generated files.
What To Test First
For most customers, this order gives the fastest path to confidence:
- Submit a real-time eligibility JSON request
- Retrieve the transaction by
id - Submit a real-time X12 request if your workflow uses a JSON request body with
x12set to the X12 270 payload - If enrolled in Coverage Discovery, start with
dryRun=true - Move to callback or polling workflows after the initial request/response path is working
Treat direct Coverage Discovery submission as an advanced follow-on test, not as the default first integration step.
How Coverage Discovery Appears In Real-Time Flows
For most customers, Coverage Discovery appears as a follow-up to the real-time eligibility flow rather than as a separate starting point.
When Coverage Discovery is part of your enrolled workflow, a real-time eligibility response may include related Coverage Discovery resources in the link header.
Example: Real-Time Response With Related Coverage Discovery Resource
POST /rcm/eligibility/v1
{
"controlNumber": "123456789",
"tradingPartnerServiceId": "AETNA",
"provider": {
"organizationName": "Example Medical Center",
"npi": "0123456789"
},
"informationReceiverName": {
"address": {
"state": "TX"
}
},
"subscriber": {
"memberId": "SUB123",
"firstName": "JOHN",
"lastName": "DOE",
"dateOfBirth": "19500102",
"ssn": "111223333",
"additionalIdentification": {
"patientAccountNumber": "PAN-1001"
}
},
"encounter": {
"dateOfService": "20250115",
"serviceTypeCodes": ["30"]
}
}
200 OK
link: </coverage-discovery/cd-task-1001>; title="coverage discovery - Task 1"; rel="related"
{
"id": "rte-patient-unknown-123",
"payer": {
"chcPayerId": "AETNA"
},
"status": {
"value": "patient_unknown"
}
}
Customers should store the related discovery task id from the link header and then use callbacks or GET /coverage-discovery/{id} to retrieve later results.
The important customer-visible behavior is the same across real-time request types: when a related discovery task is created, store the link header value and use it for later polling or callback reconciliation.
Coverage Discovery Tips
- Use
dryRun=truefirst when testing a new Coverage Discovery request. callbackUrlis still required on Coverage Discovery request bodies even whendryRun=true. In dry-run mode the callback is not invoked, but the field must still be present for request validation.- A
202 Acceptedresponse means the task was created and will complete asynchronously. - A
207 Multi-Statusresponse means the request produced more than one per-task outcome. - If you use callback delivery, your callback endpoint must be whitelisted and idempotent.
- If you poll instead of using callbacks, use the
locationheader or returned task resource path and pollGET /coverage-discovery/{id}until the rootstatusis no longerpending. - Most customers should rely on integrated Coverage Discovery triggered from real-time eligibility rather than posting discovery directly.
- If you submit discovery directly, prefer the X12 endpoint unless you already have canonical request and response models available.
- For proof-of-concept work, Optum may also be able to provide a batch file containing
x12-271responses produced by Real-Time Eligibility and/or Coverage Discovery while your polling or callback solution is still being built.
Direct JSON Discovery Notes
If you call POST /rcm/eligibility/v1/coverage-discovery directly with canonical models:
canonicalEligibilityRequestis always required- whether
canonicalEligibilityResponseis also required depends on the enrolled workflow - if you are unsure which inputs are needed, confirm the required payload pattern with Optum before implementing direct JSON discovery
Use dryRun=true when validating new task configuration or when you want to confirm request acceptance without creating a live workflow result.
Polling Guidance
If you poll for discovery completion:
- Poll by task id using
GET /rcm/eligibility/v1/coverage-discovery/{id}rather than broad list searches whenever possible - Use a modest interval appropriate for long-running async work rather than aggressive short-interval polling
- Compare pending duration to the expectations for your enrolled workflow before treating a task as abnormally delayed.
- Escalate to support when a task remains
pendingbeyond the expected window for your enrolled discovery paths or when callbacks and polling disagree about the final state
If your team needs a temporary stop-gap before async retrieval is ready, ask whether a secure batch file delivery option is available for your POC. This can be simpler than relying on extensive pagination across GET /transactions or GET /coverage-discovery in high-volume scenarios.
Deduplication
Customer-configured deduplication
- deduplication can be enabled for Real-Time Eligibility and separately for selected Coverage Discovery paths
- the customer chooses the lookback period in days
- the customer may also choose whether prior-month requests are excluded
- when a duplicate is found, the clearinghouse is skipped and the prior response is returned
- transaction details can help you confirm that reuse occurred
List Endpoint Usage
Use list endpoints for operational search and recovery, not as a substitute for storing returned IDs.
GET /rcm/eligibility/v1/transactionsis useful for searching by correlation ID, patient details, payer ID, date range, and statusGET /rcm/eligibility/v1/coverage-discoveryis useful for searching by correlation ID, date range, and task status- Use
x-total-countand pagination links where available for reporting and back-office workflows
Helpful Links
- OpenAPI spec download: use the OpenAPI button on the Overview page
- API Authentication: Security and Authorization
- Callback implementation guide: Customer Callback Example API
- Onboarding prerequisites: Onboarding
- Troubleshooting: Troubleshooting and Support
Feature-Specific Developer Notes
Use this section for API-visible behavior related to optional features. Use Value-Added Features for customer-facing feature descriptions and enrollment context.
Deduplication
- if enrolled, deduplication can be disabled per request with
x-optum-eligibility-disable-value-add: deduplication - transaction details can help you confirm whether customer-configured deduplication affected a request
Payer And Provider Identifiers
- the request-side payer identifier used for eligibility submission is
tradingPartnerServiceId - transaction and discovery response payloads may surface payer identity as
chcPayerId - operational search endpoints also expose a
payerIdfilter - continue sending the request-side provider fields defined in the request model even when NPI Management is enrolled
Coverage Discovery Path Inputs
- direct JSON discovery requires
canonicalEligibilityRequest - whether
canonicalEligibilityResponseis also required depends on the enrolled workflow - when in doubt, confirm the expected direct-discovery payload with Optum before implementing
Coverage Insight And RTCOB Observable Behavior
- when your workflow has a Patient Account Number, use
patientAccountNumber - in the JSON request model,
patientAccountNumberissubscriber.additionalIdentification.patientAccountNumber - in direct canonical discovery payloads, use
canonicalEligibilityRequest.subscriber.additionalIdentification.patientAccountNumber - in X12,
patientAccountNumbermaps from loop2100Cor2100DREFwhereREF01=EJand the value is inREF02
Consolidated Callback
- when enabled, the callback payload may include the abbreviated parent real-time transaction under
realTime - use Customer Callback Example API for callback payload structure and field interpretation
Raw JSON for Postman Collection
Copy everything in this block and paste it into Postman Import -> Raw text.
{
"info": {
"_postman_id": "4e27cb77-6624-44a2-b017-0bc7d6089458",
"name": "Enhanced Eligibility API",
"description": "Starter collection for the Enhanced Eligibility API. The collection retrieves a bearer token automatically with the OAuth2 client_credentials flow and includes common first-test requests for real-time eligibility, transaction lookup, coverage discovery, and healthcheck.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
"const token = pm.collectionVariables.get('access_token');",
"const expiry = Number(pm.collectionVariables.get('access_token_expires_at') || '0');",
"const now = Date.now();",
"if (token && expiry - now > 60000) {",
" return;",
"}",
"",
"const baseUrl = pm.collectionVariables.get('base_url');",
"const clientId = pm.collectionVariables.get('client_id');",
"const clientSecret = pm.collectionVariables.get('client_secret');",
"",
"if (!baseUrl || !clientId || !clientSecret) {",
" throw new Error('Set base_url, client_id, and client_secret before sending requests.');",
"}",
"",
"const basic = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(clientId + ':' + clientSecret));",
"",
"pm.sendRequest({",
" url: baseUrl + '/apip/auth/v2/token',",
" method: 'POST',",
" header: [",
" { key: 'Authorization', value: 'Basic ' + basic },",
" { key: 'Content-Type', value: 'application/x-www-form-urlencoded' }",
" ],",
" body: {",
" mode: 'urlencoded',",
" urlencoded: [",
" { key: 'grant_type', value: 'client_credentials' }",
" ]",
" }",
"}, function (err, res) {",
" if (err) {",
" throw err;",
" }",
" if (!res || res.code >= 400) {",
" throw new Error('Token request failed with status ' + (res && res.code));",
" }",
" const json = res.json();",
" if (!json.access_token) {",
" throw new Error('Token response did not include access_token.');",
" }",
" const expiresIn = Number(json.expires_in || 3300);",
" pm.collectionVariables.set('access_token', json.access_token);",
" pm.collectionVariables.set('access_token_expires_at', String(Date.now() + expiresIn * 1000));",
"});"
]
}
}
],
"variable": [
{ "key": "base_url", "value": "https://sandbox-apigw.optum.com" },
{ "key": "client_id", "value": "" },
{ "key": "client_secret", "value": "" },
{ "key": "access_token", "value": "" },
{ "key": "access_token_expires_at", "value": "0" },
{ "key": "correlation_id", "value": "quickstart-001" },
{ "key": "subtenant_id", "value": "" },
{ "key": "transaction_id", "value": "" },
{ "key": "discovery_id", "value": "" },
{ "key": "callback_url", "value": "https://example-customer.test/callbacks/coverage-discovery" }
],
"item": [
{
"name": "Eligibility Requests",
"item": [
{
"name": "Submit Eligibility (JSON)",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"if (pm.response.code === 200) {",
" const json = pm.response.json();",
" if (json.id) {",
" pm.collectionVariables.set('transaction_id', json.id);",
" }",
"}"
]
}
}
],
"request": {
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json", "type": "text" },
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" },
{ "key": "x-optum-subtenant-id", "value": "{{subtenant_id}}", "type": "text", "disabled": true }
],
"body": {
"mode": "raw",
"raw": "{\n \"controlNumber\": \"123456789\",\n \"tradingPartnerServiceId\": \"AETNA\",\n \"provider\": {\n \"organizationName\": \"Example Medical Center\",\n \"npi\": \"0123456789\"\n },\n \"informationReceiverName\": {\n \"address\": {\n \"state\": \"TX\"\n }\n },\n \"subscriber\": {\n \"memberId\": \"SUB123\",\n \"firstName\": \"JOHN\",\n \"lastName\": \"DOE\",\n \"dateOfBirth\": \"19500102\",\n \"ssn\": \"111223333\",\n \"additionalIdentification\": {\n \"patientAccountNumber\": \"PAN-1001\"\n },\n \"address\": {\n \"address1\": \"123 Main St\",\n \"city\": \"Dallas\",\n \"state\": \"TX\",\n \"postalCode\": \"75001\"\n }\n },\n \"encounter\": {\n \"dateOfService\": \"20250115\",\n \"serviceTypeCodes\": [\"30\"]\n }\n}"
},
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1" ]
},
"description": "Submit a normalized JSON real-time eligibility request. If Coverage Discovery is enrolled, inspect the response `link` header for related discovery task resources."
}
},
{
"name": "Submit Eligibility (X12)",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"if (pm.response.code === 200) {",
" const json = pm.response.json();",
" if (json.id) {",
" pm.collectionVariables.set('transaction_id', json.id);",
" }",
"}"
]
}
}
],
"request": {
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json", "type": "text" },
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" },
{ "key": "x-optum-subtenant-id", "value": "{{subtenant_id}}", "type": "text", "disabled": true }
],
"body": {
"mode": "raw",
"raw": "{\n \"x12\": \"ISA*00* *01*SomePwd *ZZ*TPG00000 *ZZ*EMDEON *220304*0343*^*00501*123456789*0*T*:~GS*HS*LLX1210001*MTEXE*20131015*2219*123456789*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*1-622233a9-6fca5eb41ae6862b269452c9*20220304*0343~HL*1**20*1~NM1*PR*2*CMS*****PI*CMSMED~HL*2*1*21*1~NM1*1P*2*HAPPY DOCTORS GROUP PRACTICE*****XX*1234567893~HL*3*2*22*0~TRN*1*123456789*9877281234~NM1*IL*1*DOEONE*JOHNONE*M***MI*0000000000~N3*123 address1~N4*SEATTLE*WA*981010000~DMG*D8*18800102*F~DTP*291*RD8*20210101-20211231~EQ*30~SE*20*0001~GE*1*123456789~IEA*1*123456789~\"\n}"
},
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/real-time/x12",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "real-time", "x12" ]
},
"description": "Submit a JSON request body with `x12` set to the raw X12 270 payload, and receive the normalized JSON response model. If Coverage Discovery is enrolled, inspect the response `link` header for related discovery task resources."
}
}
]
},
{
"name": "Eligibility Transactions",
"item": [
{
"name": "Get All Transactions",
"request": {
"method": "GET",
"header": [
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" }
],
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/transactions?limit=10&offset=0",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "transactions" ],
"query": [
{ "key": "limit", "value": "10" },
{ "key": "offset", "value": "0" }
]
}
}
},
{
"name": "Get Transaction By Id",
"request": {
"method": "GET",
"header": [
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" }
],
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/transactions/{{transaction_id}}",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "transactions", "{{transaction_id}}" ]
},
"description": "Run a real-time request first so transaction_id is captured automatically."
}
}
]
},
{
"name": "Coverage Discovery",
"item": [
{
"name": "Submit Discovery Dry Run (JSON)",
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"const location = pm.response.headers.get('location');",
"if (location) {",
" const id = location.split('/').pop();",
" pm.collectionVariables.set('discovery_id', id);",
"}"
]
}
}
],
"request": {
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json", "type": "text" },
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" },
{ "key": "x-optum-subtenant-id", "value": "{{subtenant_id}}", "type": "text", "disabled": true }
],
"body": {
"mode": "raw",
"raw": "{\n \"canonicalEligibilityRequest\": {\n \"controlNumber\": \"123456789\",\n \"tradingPartnerServiceId\": \"CIGNA\",\n \"provider\": {\n \"organizationName\": \"Example Medical Center\",\n \"npi\": \"0123456789\"\n },\n \"informationReceiverName\": {\n \"address\": {\n \"state\": \"TX\"\n }\n },\n \"subscriber\": {\n \"memberId\": \"0000000000\",\n \"firstName\": \"johnOne\",\n \"lastName\": \"doeOne\",\n \"dateOfBirth\": \"18800102\",\n \"ssn\": \"555443333\",\n \"address\": {\n \"address1\": \"123 Main St\",\n \"city\": \"Dallas\",\n \"state\": \"TX\",\n \"postalCode\": \"75001\"\n }\n },\n \"encounter\": {\n \"dateOfService\": \"20250115\",\n \"serviceTypeCodes\": [\"30\"]\n }\n },\n \"callbackUrl\": \"{{callback_url}}\",\n \"dryRun\": true\n}"
},
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/coverage-discovery",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "coverage-discovery" ]
},
"description": "Recommended first Coverage Discovery request. `canonicalEligibilityRequest` is always required. Use `dryRun=true` to validate request acceptance without creating a live workflow result or sending a callback."
}
},
{
"name": "Submit Discovery Dry Run (X12)",
"request": {
"method": "POST",
"header": [
{ "key": "Content-Type", "value": "application/json", "type": "text" },
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" },
{ "key": "x-optum-subtenant-id", "value": "{{subtenant_id}}", "type": "text", "disabled": true }
],
"body": {
"mode": "raw",
"raw": "{\n \"x12-270\": \"ISA*00* *01*SomePwd *ZZ*TPG00000 *ZZ*EMDEON *220304*0343*^*00501*123456789*0*T*:~GS*HS*LLX1210001*MTEXE*20131015*2219*123456789*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*1-622233a9-6fca5eb41ae6862b269452c9*20220304*0343~HL*1**20*1~NM1*PR*2*CMS*****PI*CMSMED~HL*2*1*21*1~NM1*1P*2*HAPPY DOCTORS GROUP PRACTICE*****XX*1234567893~HL*3*2*22*0~TRN*1*123456789*9877281234~NM1*IL*1*DOEONE*JOHNONE*M***MI*0000000000~N3*123 address1~N4*SEATTLE*WA*981010000~DMG*D8*18800102*F~DTP*291*RD8*20210101-20211231~EQ*30~SE*20*0001~GE*1*123456789~IEA*1*123456789~\",\n \"x12-271\": \"ISA*00* *01*SomePwd *ZZ*EMDEON *ZZ*TPG00000 *220304*0343*^*00501*123456789*0*T*:~GS*HB*MTEXE*LLX1210001*20131015*2219*123456789*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*1-622233a9-6fca5eb41ae6862b269452c9*20220304*0343~HL*1**20*1~NM1*PR*2*CMS*****PI*CMSMED~HL*2*1*21*1~NM1*1P*2*HAPPY DOCTORS GROUP PRACTICE*****XX*1234567893~HL*3*2*22*0~TRN*2*123456789*9877281234~TRN*2*1266798199*9MCK-TSHRT~NM1*IL*1*DOEONE*JOHNONE*M***MI*0000000000~N3*123 address1~N4*SEATTLE*WA*981010000~DMG*D8*18800102*F~INS*Y*18*001*25~DTP*307*RD8*20211020-20211020~EB*I**41^54~EB*1**88~EB*1**30^42^45^48^49^69^76^83^A5^A7^AG^BT^BU^BV*MA~DTP*291*D8*20041101~MSG*0-Beneficiary insured due to age OASI~EB*C**30*MA**26*1484~DTP*291*RD8*20210101-20211231~EB*C**30*MA**29*1484~DTP*291*RD8*20210101-20211231~EB*C**42^45*MA**26*0~DTP*292*RD8*20210101-20211231~EB*1**30^2^23^24^25^26^27^28^3^33^36^37^38^39^4^40^42^50^51^52^53^62^67^69^73^76^83^86^98^A4^A6^A8^AI^AJ^AK^AL^BT^BU^BV^DM^UC*MB~DTP*291*D8*20041101~MSG*0-Beneficiary insured due to age OASI~EB*C**30*MB**23*203~DTP*291*RD8*20210101-20211231~EB*C**30*MB**29*0~DTP*291*RD8*20210101-20211231~EB*A**30*MB**27**0.2~DTP*291*RD8*20210101-20211231~EB*C**42^67^AJ*MB**23*0~DTP*292*RD8*20210101-20211231~EB*A**42^67^AJ*MB**27**0~DTP*292*RD8*20210101-20211231~EB*R**88*OT~REF*18*S5601~REF*N6*203*SilverScript SmartRx~DTP*292*D8*20210101~LS*2120~NM1*PR*2*extra healthy insurance~N3*123 address1~N4*Nashville*TN*37203~PER*IC**TE*0000000000*UR*www.testwebsite.com~LE*2120~SE*50*0001~GE*1*123456789~IEA*1*123456789~\",\n \"callbackUrl\": \"{{callback_url}}\",\n \"dryRun\": true\n}"
},
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/coverage-discovery/x12",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "coverage-discovery", "x12" ]
}
}
},
{
"name": "Get All Discovery Tasks",
"request": {
"method": "GET",
"header": [
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" }
],
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/coverage-discovery?limit=10&offset=0",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "coverage-discovery" ],
"query": [
{ "key": "limit", "value": "10" },
{ "key": "offset", "value": "0" }
]
}
}
},
{
"name": "Get Discovery By Id",
"request": {
"method": "GET",
"header": [
{ "key": "x-optum-correlation-id", "value": "{{correlation_id}}", "type": "text" }
],
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/coverage-discovery/{{discovery_id}}",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "coverage-discovery", "{{discovery_id}}" ]
}
}
}
]
},
{
"name": "Healthcheck",
"item": [
{
"name": "Get Healthcheck",
"request": {
"method": "GET",
"url": {
"raw": "{{base_url}}/rcm/eligibility/v1/healthcheck",
"host": [ "{{base_url}}" ],
"path": [ "rcm", "eligibility", "v1", "healthcheck" ]
}
}
}
]
}
]
}
Raw JSON for Postman Sandbox Environment
Copy everything in this block and paste it into Postman Import -> Raw text.
{
"id": "e71953fe-3ac2-4747-96d7-547f20f24d5a",
"name": "Enhanced Eligibility Sandbox",
"values": [
{
"key": "base_url",
"value": "https://sandbox-apigw.optum.com",
"enabled": true
},
{
"key": "client_id",
"value": "",
"enabled": true
},
{
"key": "client_secret",
"value": "",
"enabled": true
},
{
"key": "subtenant_id",
"value": "",
"enabled": true
}
],
"_postman_variable_scope": "environment",
"_postman_exported_at": "2026-04-07T00:00:00.000Z",
"_postman_exported_using": "Postman"
}
Raw JSON for Postman Production Environment
Copy everything in this block and paste it into Postman Import -> Raw text.
{
"id": "bc98a82e-d4de-48b0-9c27-e55174b1a7b0",
"name": "Enhanced Eligibility Production",
"values": [
{
"key": "base_url",
"value": "https://apigw.optum.com",
"enabled": true
},
{
"key": "client_id",
"value": "",
"enabled": true
},
{
"key": "client_secret",
"value": "",
"enabled": true
},
{
"key": "subtenant_id",
"value": "",
"enabled": true
}
],
"_postman_variable_scope": "environment",
"_postman_exported_at": "2026-04-07T00:00:00.000Z",
"_postman_exported_using": "Postman"
}
Raw JSON for Insomnia Import
Copy everything in this block and paste it into Insomnia import.
{
"_type": "export",
"__export_format": 4,
"__export_date": "2026-04-07T00:00:00.000Z",
"__export_source": "insomnia",
"resources": [
{
"_id": "wrk_enhanced_eligibility",
"parentId": null,
"modified": 1775529600000,
"created": 1775529600000,
"name": "Enhanced Eligibility API",
"description": "Repo-maintained starter Insomnia export for the Enhanced Eligibility API.",
"scope": "collection",
"_type": "workspace"
},
{
"_id": "env_enhanced_eligibility_base",
"parentId": "wrk_enhanced_eligibility",
"modified": 1775529600000,
"created": 1775529600000,
"name": "Base Environment",
"data": {
"base_url": "https://sandbox-apigw.optum.com",
"client_id": "",
"client_secret": "",
"correlation_id": "quickstart-001",
"subtenant_id": "",
"transaction_id": "",
"discovery_id": "",
"callback_url": "https://example-customer.test/callbacks/coverage-discovery"
},
"_type": "environment"
},
{
"_id": "fld_eligibility_requests",
"parentId": "wrk_enhanced_eligibility",
"modified": 1775529600000,
"created": 1775529600000,
"name": "Eligibility Requests",
"description": "Submit a normalized JSON real-time eligibility request. If Coverage Discovery is enrolled, inspect the response link header for related discovery task resources.",
"environment": {},
"_type": "request_group"
},
{
"_id": "fld_transactions",
"parentId": "wrk_enhanced_eligibility",
"modified": 1775529600000,
"created": 1775529600000,
"name": "Eligibility Transactions",
"description": "",
"environment": {},
"_type": "request_group"
},
{
"_id": "fld_discovery",
"parentId": "wrk_enhanced_eligibility",
"modified": 1775529600000,
"created": 1775529600000,
"name": "Coverage Discovery",
"description": "",
"environment": {},
"_type": "request_group"
},
{
"_id": "fld_healthcheck",
"parentId": "wrk_enhanced_eligibility",
"modified": 1775529600000,
"created": 1775529600000,
"name": "Healthcheck",
"description": "",
"environment": {},
"_type": "request_group"
},
{
"_id": "req_submit_eligibility_json",
"parentId": "fld_eligibility_requests",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1",
"name": "Submit Eligibility (JSON)",
"description": "",
"method": "POST",
"body": {
"mimeType": "application/json",
"text": "{\n \"controlNumber\": \"123456789\",\n \"tradingPartnerServiceId\": \"AETNA\",\n \"provider\": {\n \"organizationName\": \"Example Medical Center\",\n \"npi\": \"0123456789\"\n },\n \"informationReceiverName\": {\n \"address\": {\n \"state\": \"TX\"\n }\n },\n \"subscriber\": {\n \"memberId\": \"SUB123\",\n \"firstName\": \"JOHN\",\n \"lastName\": \"DOE\",\n \"dateOfBirth\": \"19500102\",\n \"ssn\": \"111223333\",\n \"additionalIdentification\": {\n \"patientAccountNumber\": \"PAN-1001\"\n },\n \"address\": {\n \"address1\": \"123 Main St\",\n \"city\": \"Dallas\",\n \"state\": \"TX\",\n \"postalCode\": \"75001\"\n }\n },\n \"encounter\": {\n \"dateOfService\": \"20250115\",\n \"serviceTypeCodes\": [\"30\"]\n }\n}"
},
"parameters": [],
"headers": [
{ "name": "Content-Type", "value": "application/json" },
{ "name": "x-optum-correlation-id", "value": "{{ _.correlation_id }}" },
{ "name": "x-optum-subtenant-id", "value": "{{ _.subtenant_id }}", "disabled": true }
],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
},
{
"_id": "req_submit_eligibility_x12",
"parentId": "fld_eligibility_requests",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1/real-time/x12",
"name": "Submit Eligibility (X12)",
"description": "Submit a JSON request body with `x12` set to the raw X12 270 payload, and receive the normalized JSON response model. If Coverage Discovery is enrolled, inspect the response link header for related discovery task resources.",
"method": "POST",
"body": {
"mimeType": "application/json",
"text": "{\n \"x12\": \"ISA*00* *01*SomePwd *ZZ*TPG00000 *ZZ*EMDEON *220304*0343*^*00501*123456789*0*T*:~GS*HS*LLX1210001*MTEXE*20131015*2219*123456789*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*1-622233a9-6fca5eb41ae6862b269452c9*20220304*0343~HL*1**20*1~NM1*PR*2*CMS*****PI*CMSMED~HL*2*1*21*1~NM1*1P*2*HAPPY DOCTORS GROUP PRACTICE*****XX*1234567893~HL*3*2*22*0~TRN*1*123456789*9877281234~NM1*IL*1*DOEONE*JOHNONE*M***MI*0000000000~N3*123 address1~N4*SEATTLE*WA*981010000~DMG*D8*18800102*F~DTP*291*RD8*20210101-20211231~EQ*30~SE*20*0001~GE*1*123456789~IEA*1*123456789~\"\n}"
},
"parameters": [],
"headers": [
{ "name": "Content-Type", "value": "application/json" },
{ "name": "x-optum-correlation-id", "value": "{{ _.correlation_id }}" },
{ "name": "x-optum-subtenant-id", "value": "{{ _.subtenant_id }}", "disabled": true }
],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
},
{
"_id": "req_get_all_transactions",
"parentId": "fld_transactions",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1/transactions?limit=10&offset=0",
"name": "Get All Transactions",
"description": "",
"method": "GET",
"parameters": [],
"headers": [
{ "name": "x-optum-correlation-id", "value": "{{ _.correlation_id }}" }
],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
},
{
"_id": "req_get_transaction_by_id",
"parentId": "fld_transactions",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1/transactions/{{ _.transaction_id }}",
"name": "Get Transaction By Id",
"description": "Paste the transaction_id from a prior real-time response.",
"method": "GET",
"parameters": [],
"headers": [
{ "name": "x-optum-correlation-id", "value": "{{ _.correlation_id }}" }
],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
},
{
"_id": "req_submit_discovery_dry_run_json",
"parentId": "fld_discovery",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1/coverage-discovery",
"name": "Submit Discovery Dry Run (JSON)",
"description": "",
"method": "POST",
"body": {
"mimeType": "application/json",
"text": "{\n \"canonicalEligibilityRequest\": {\n \"controlNumber\": \"123456789\",\n \"tradingPartnerServiceId\": \"CIGNA\",\n \"provider\": {\n \"organizationName\": \"Example Medical Center\",\n \"npi\": \"0123456789\"\n },\n \"informationReceiverName\": {\n \"address\": {\n \"state\": \"TX\"\n }\n },\n \"subscriber\": {\n \"memberId\": \"0000000000\",\n \"firstName\": \"johnOne\",\n \"lastName\": \"doeOne\",\n \"dateOfBirth\": \"18800102\",\n \"ssn\": \"555443333\",\n \"address\": {\n \"address1\": \"123 Main St\",\n \"city\": \"Dallas\",\n \"state\": \"TX\",\n \"postalCode\": \"75001\"\n }\n },\n \"encounter\": {\n \"dateOfService\": \"20250115\",\n \"serviceTypeCodes\": [\"30\"]\n }\n },\n \"callbackUrl\": \"{{ _.callback_url }}\",\n \"dryRun\": true\n}"
},
"parameters": [],
"headers": [
{ "name": "Content-Type", "value": "application/json" },
{ "name": "x-optum-correlation-id", "value": "{{ _.correlation_id }}" },
{ "name": "x-optum-subtenant-id", "value": "{{ _.subtenant_id }}", "disabled": true }
],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
},
{
"_id": "req_get_discovery_by_id",
"parentId": "fld_discovery",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1/coverage-discovery/{{ _.discovery_id }}",
"name": "Get Discovery By Id",
"description": "Paste the discovery_id from a prior response or location header.",
"method": "GET",
"parameters": [],
"headers": [
{ "name": "x-optum-correlation-id", "value": "{{ _.correlation_id }}" }
],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
},
{
"_id": "req_healthcheck",
"parentId": "fld_healthcheck",
"modified": 1775529600000,
"created": 1775529600000,
"url": "{{ _.base_url }}/rcm/eligibility/v1/healthcheck",
"name": "Get Healthcheck",
"description": "",
"method": "GET",
"parameters": [],
"headers": [],
"authentication": {
"type": "oauth2",
"grantType": "client_credentials",
"accessTokenUrl": "{{ _.base_url }}/apip/auth/v2/token",
"clientId": "{{ _.client_id }}",
"clientSecret": "{{ _.client_secret }}",
"scope": "",
"credentialsInBody": false
},
"_type": "request"
}
]
}
Need help? See Troubleshooting and Support
Looking for the homepage? Return to Enhanced Eligibility Overview here.
Updated 4 days ago