Choose a route and create an authorization

Use this guide when your integration is ready to create a prior authorization case for a specific provider, payer, coverage state, service type, and service code.

Create exactly one Authorization for one payer submission. Collate resolves the payer route during create and returns the current case state.

Before you create

You need:

  • a bearer API key for the target environment
  • a providerNpi registered to your organization
  • a canonical payerId
  • a two-letter coverage state
  • a request type: inpatient, outpatient, or drug
  • a service code system and code: hcpcs, cpt, or ndc

For production launch, resolve representative routes in production before creating live cases for a provider.

Create flow

1

List route options

Use route options to discover serviceable payer, state, request type, and supported code-system combinations for a provider.

1GET /v1/prior-authorization-routes?providerNpi=1234567893
2Authorization: Bearer <API_KEY>
1{
2 "providerNpi": "1234567893",
3 "options": [
4 {
5 "payerId": "payer_aetna",
6 "payerDisplayName": "Aetna",
7 "coverageState": "CA",
8 "requestType": "drug",
9 "supportedServiceCodeSystems": ["hcpcs", "ndc"],
10 "channel": "portal",
11 "accessMode": "collate_managed",
12 "label": "Aetna CA drug"
13 }
14 ]
15}
2

Resolve an exact route

Before creating from selected, mapped, or imported route inputs, validate the exact service code.

1POST /v1/prior-authorization-routes/resolve
2Authorization: Bearer <API_KEY>
3Content-Type: application/json
4
5{
6 "providerNpi": "1234567893",
7 "payerId": "payer_aetna",
8 "coverageState": "CA",
9 "requestType": "drug",
10 "serviceCode": {
11 "system": "hcpcs",
12 "code": "J0791"
13 }
14}

409 unsupported_route means no serviceable route exists. 409 provider_access_not_configured means the route exists but Collate does not have provider access configured for it.

3

Create the authorization

POST /v1/prior-authorizations requires Idempotency-Key because the server generates the authorization ID. Reuse a key only when retrying the exact same request body.

1POST /v1/prior-authorizations
2Authorization: Bearer <API_KEY>
3Idempotency-Key: create-auth-7b984f1d
4Content-Type: application/json
5
6{
7 "providerNpi": "1234567893",
8 "request": {
9 "payerId": "payer_aetna",
10 "coverageState": "CA",
11 "requestType": "drug",
12 "serviceCode": {
13 "system": "hcpcs",
14 "code": "J0791"
15 }
16 },
17 "policy": {
18 "finalSubmission": "requires_approval"
19 },
20 "metadata": {
21 "externalCaseId": "case_789"
22 }
23}
policy.finalSubmissionMeaning
requires_approvalCollate pauses before final payer submit when approval is needed.
automaticCollate may submit at the final boundary in environments where final submit is enabled.

Sandbox and other safety gates may still ask for final approval even when the create policy is automatic.

4

Optionally include initial answers

You can include an initial partial answer set on create. The response still returns the current questionnaire, requirements, and nextAction.

1{
2 "answers": {
3 "item": [
4 { "linkId": "patient.first_name", "answer": [{ "valueString": "Jane" }] },
5 { "linkId": "coverage.member_id", "answer": [{ "valueString": "W123456789" }] },
6 {
7 "linkId": "diagnoses",
8 "item": [
9 { "linkId": "code", "answer": [{ "valueString": "M06.9" }] },
10 { "linkId": "qualifierCode", "answer": [{ "valueCoding": { "code": "ABF" } }] }
11 ]
12 }
13 ]
14 }
15}
5

Branch on the response

After create, follow the returned authorization state.

Current responseNext step
requires_action and resolve_requirementsPatch answers or attach files.
requires_action and continue_authorizationCall POST /confirm with If-Match.
requires_action and approve_submissionReview submission.reviewSnapshot, then call POST /confirm.
processingPoll the authorization.

API reference