Skip to main content
Prior authorization responses answer four separate questions:
  1. Did the API accept the request?
  2. What stage is the PA in?
  3. What operational activity occurred within that stage?
  4. If the workflow stopped, what should the caller do next?

Choose the right signal

Lifecycle

Do not use the legacy outcome.result: "Pending" placeholder to determine whether a PA is still running.

Terminal states and outcomes

Interpret data.status before interpreting data.outcome: A completed state does not by itself mean that Develop Health sent a new PA. For example, duplicate_request and prior_auth_not_required are completed Other results.

Workflow state versus activity

PA status is intentionally high-level. It does not change for every fax, call, provider interaction, or payer follow-up. A provider outreach has its own lifecycle. A single outreach becoming expired or failed does not make the parent PA terminal; a retry or escalation can create a new outreach with a new ID. Continue using the PA’s data.status for the overall workflow.

More information requests

A request for more information is not automatically terminal. While Develop Health is gathering or answering it, the PA remains in a nonterminal state such as awaiting_provider_response, awaiting_outcome, or validating_outcome. Only treat the PA as stopped when data.status itself becomes terminal. A terminal not_submitted or Other outcome can use more_information_required as its detail_code when the current workflow can no longer continue.

Request errors

Creation errors from Send Prior Authorization use the structured error response format. error.existing_prior_auth_request_id identifies an existing PA when the error refers to one; it can otherwise be null or omitted. If creation returns an error, do not start monitoring a new PA. When existing_prior_auth_request_id is present, continue monitoring that PA. The creation code other is unrelated to a completed PA whose outcome.result is Other. Some input problems are detected during creation, such as an invalid Rx BIN, an unreadable member ID, or an evidence file that cannot be downloaded. Problems discovered only after the PA is accepted appear as terminal exceptions below.

Terminal exceptions

These signals are returned by Retrieve Prior Authorization and the corresponding webhooks:

Not-submitted codes

Other result codes

data.outcome.result: "Other" means the terminal result is neither approval nor denial. It does not mean an unclassified request error occurred.

Eligibility-check errors

When enabled, data.eligibility_check_response contains one item per result. An error item has status: "error", an error_code, a human-readable error_message, and an action_code.

Retrieve errors

Retrieve Prior Authorization returns 404 when the PA does not exist or is not visible to the authenticated organization.

Nested operations

Nested work has its own lifecycle and errors and does not change the meaning of the parent PA state. If data.prescription_transfer is populated, see Cancel Prior Authorization Prescription Transfer for its states and error codes.

Monitoring and unknown values

Use the retrieve endpoint or prior_authorization.status_change webhook to monitor the lifecycle. Other event types describe messages, provider outreach, and prescription transfer; receiving one does not mean the PA is terminal. Treat code lists as extensible. Preserve unknown codes in logs and handle them like other rather than failing to parse the response. See Understanding API Responses for common authentication and validation errors.