Skip to main content
Develop Health APIs report whether a request was accepted separately from what happens in the workflow it creates. Integrations should answer these questions in order:
  1. Did the API accept the request?
  2. If it did, what is the current workflow state?
  3. If the workflow stopped, which code explains what the caller should do next?
Read each response at the appropriate layer: An envelope status of success means the HTTP request succeeded. It does not mean an asynchronous workflow has completed.

Which signal to handle

Approved, Denied, and benefit coverage results are business outcomes, not API or workflow errors.

API errors

An API error means the request did not return a newly accepted workflow ID. Do not start monitoring a new resource unless the error identifies an existing workflow to use. The create endpoint pages list the public codes and recommended caller action.

Error response formats

Business errors generally use a structured envelope:
Branch on error.code, not the human-readable title or description. Treat unknown future codes as recoverable unknown values and preserve them in logs. Request parsing, validation, and some not-found errors use a standard detail response instead. Validation responses contain a detail array whose loc field identifies the invalid request field. Endpoint pages list their additional error codes and status codes.

Workflow errors and exceptional outcomes

Workflow errors happen after a create request was accepted, so they are exposed on the resource returned by a retrieve endpoint or webhook rather than as the original create response. The exact signal is product-specific:
  • Benefit verifications use data.status: "failed" with data.error.code and an optional detail_code.
  • Prior authorizations distinguish not_submitted, failed, and a completed Other outcome. These signals have different meanings and should not be collapsed into a single generic failure.
  • Nested work such as prescription transfer has its own state and error fields; it does not change the meaning of the parent PA’s status.
Use the endpoint-specific code tables for caller behavior. Treat code enums as extensible: preserve an unknown value in logs and route it through the same manual fallback as the product’s catch-all code instead of failing to parse the response. For the complete product contracts, see Benefit Verification Response Handling and Prior Authorization Response Handling.

Monitoring asynchronous workflows

After creating a benefit verification or prior authorization, use the retrieve endpoint or subscribe to the relevant webhook until data.status is terminal. Use the workflow state as the source of truth for progress, even when a nested result field contains a placeholder such as Pending. For resource-state webhook events, data uses the response schema from the corresponding retrieve endpoint. Provider outreach events use a dedicated payload; see Provider outreach webhooks. Process notifications idempotently because a delivery can be retried, and use the retrieve endpoint to reconcile the current resource state when needed. A PA webhook can describe an intermediate state or a nested update; it does not necessarily mean the PA is terminal.