Skip to main content
Each authorization moves through a small set of explicit workflow states. Clients do not manage those transitions directly. They update the authorization, resolve blocking actions when required, and react to the resulting state. Use the diagram for orientation. The tables below are the source of truth.

Workflow states

StateMeaning
needs_inputRequired case data or questionnaire answers are still missing. The authorization can be updated, previewed, and supplemented with attachments.
ready_to_submitRequired data is present and no blocking actions are open.
submittingTransient state while the API renders documents, uploads them, and records the outbound submission.
pending_payerSubmission completed successfully and the payer has not responded yet.
action_requiredA blocking action is open. This is either a system-generated validation issue or a payer request for information.
completedTerminal state. Check decisionState and decisionDetails for the payer outcome.
cancelledTerminal state. The authorization was cancelled before completion.

Decision states

StateMeaning
unknownNo payer decision has been recorded.
pendingThe authorization has been submitted and is awaiting a payer response.
approvedThe payer approved the request.
deniedThe payer denied the request.

Transition rules

Current stateOperation or eventResultNotes
POST /authorizations with incomplete required answersneeds_inputCreation succeeds even when required answers are missing.
POST /authorizations with complete required answersready_to_submitThe authorization is immediately submittable.
needs_inputPATCH /authorizations/{id} with blockers clearedready_to_submitValidation-issue actions are recomputed automatically.
needs_input or ready_to_submitPATCH /authorizations/{id} leaves blocking validation actions openaction_requiredValidation-issue actions can appear during patch as well as during submit.
needs_inputPOST /authorizations/{id}/submitaction_requiredSubmit returns 409 validation_failed and creates validation_issue actions.
ready_to_submitPOST /authorizations/{id}/submitsubmitting then pending_payerSubmit is idempotent when you send an idempotency key.
submittingsubmission side effect failsready_to_submitThe API records a failed submission event and clears the transient state.
pending_payersandbox or live approvalcompleteddecisionState becomes approved.
pending_payersandbox or live denialcompleteddecisionState becomes denied.
pending_payersandbox or live payer request for informationaction_requiredCreates a payer_request_for_information action.
action_requiredclient patches validation blockersready_to_submit if no other blocking actions remainApplies to system-managed validation actions.
action_requiredclient resolves payer request for informationready_to_submit if no other blocking actions remainRequires at least one attachment ID in the resolve request.
needs_input, ready_to_submit, pending_payer, action_requiredPOST /authorizations/{id}/cancelcancelledCancellation is blocked in terminal states.

Submission semantics

POST /v1/prior-auth/authorizations/{authorizationId}/submit runs in three stages:
  1. validate the authorization, verify that no blocking actions are open, create or reuse the submit idempotency lock, and move the case to submitting
  2. render the filled form, submission cover sheet, and submission packet, then upload them
  3. persist the artifacts, confirm the outbound submission, set submissionChannel, stamp submittedAt if needed, and move the case to pending_payer
If stage 2 fails after the idempotency lock is acquired, the API records a failed submission event and returns the authorization to ready_to_submit.

Action model

Actions are the explicit blocking work items on an authorization.

validation_issue

  • created automatically when blocking validation errors are present after patch or submit
  • can represent missing questionnaire answers, missing top-level context, or other rule violations
  • not manually resolvable
  • cleared automatically when the authorization is patched so the blocking issues disappear
These are general blocking validation actions, not just “missing answer” markers.

payer_request_for_information

  • created when the payer requests more documentation after submission
  • resolved with POST /v1/prior-auth/authorizations/{authorizationId}/actions/{actionId}/resolve
  • requires at least one attached authorization attachment ID
  • returns the authorization to ready_to_submit once all blocking actions are cleared

Preview semantics

POST /v1/prior-auth/authorizations/{authorizationId}/preview is an explicit generation command. It may render documents and refresh cached preview state, but it does not mutate the authorization lifecycle. Preview returns:
  • submittable
  • validationIssues
  • contextRequirements
  • questionStates
  • activeRequirementGroups
  • supportingDocumentRequests
  • mappingSummary
  • documents.filledForm
  • documents.draftPacket
Use preview as the pre-submit readiness check instead of reproducing validation logic in the client.

Resolved questionnaire data

Authorization creation resolves the payer questionnaire and keeps it fixed for that authorization. Authorization responses include:
  • the FHIR questionnaire
  • supportingDocumentationGuidance
  • contextRequirements
  • questionStates
  • activeRequirementGroups
  • reduced sourceForm metadata
  • provenance

Events

Events are the immutable lifecycle log for an authorization. Common event types include:
Event typeMeaning
prior_auth.authorization.createdAuthorization created
prior_auth.authorization.updatedAuthorization updated
prior_auth.status.changedWorkflow or decision state changed
prior_auth.attachments.addedSupporting document attached
prior_auth.attachments.removedSupporting document removed
prior_auth.submission.submittedSubmission committed
prior_auth.submission.failedSubmission side effect failed
prior_auth.action.requiredBlocking action created
prior_auth.action.resolvedBlocking action resolved
prior_auth.payer.response_receivedPayer response received
prior_auth.completedAuthorization reached a terminal decision

Idempotency

POST /authorizations and POST /authorizations/{id}/submit accept an optional Idempotency-Key header. Behavior:
  • same create key + same request body: returns the existing authorization
  • same create key + different request body: returns 409 idempotency_key_reused_with_different_request
  • same submit key + same authorization: returns the current submission result without duplicating artifacts
  • same submit key + different authorization: returns 409 idempotency_key_reused_for_different_authorization

Sandbox testing

The customer-visible sandbox route is:
  • POST /v1/sandbox/prior-auth/authorizations/{authorizationId}/payer-events
It lets you inject:
  • approval
  • denial
  • more_info_request
Sandbox routes are for testing payer outcomes. Production integrations should automate against the authorization, actions, artifacts, and events.