PriorAuthdocs

Your first request

One authorization, from your first call to a decision, with everything that happens in between.

#1 · Send the task

POST /api/a2a
curl -X POST https://app.authprior.com/api/a2a \
  -H "authorization: Bearer $TOKEN" \
  -H "content-type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "message/send",
    "params": {
      "message": {
        "role": "user",
        "parts": [{ "kind": "data", "data": {
          "skill": "prior_auth_intake",
          "practiceId": "p_north",
          "patient": {
            "memberId": "MEM100200300",
            "firstName": "Dana", "lastName": "Reyes",
            "birthDate": "1979-04-12"
          },
          "service": {
            "payerId": "BCBSF",
            "procedureCodes": ["27447"],
            "diagnosisCodes": ["M17.11"],
            "fromDate": "2026-10-01",
            "placeOfService": "24"
          },
          "provider": { "npi": "1234567890" }
        }}]
      }
    }
  }'

#2 · You get a task back

json
{
  "jsonrpc": "2.0", "id": "1",
  "result": {
    "id": "task-8f21c",
    "status": { "state": "working" },
    "history": [{ "role": "agent", "parts": [{ "kind": "text",
      "text": "Checking payer support and assembling the request." }] }]
  }
}

Keep task-8f21c. Everything after this is a poll on it.

#3 · Poll

bash
curl -X POST https://app.authprior.com/api/a2a \
  -H "authorization: Bearer $TOKEN" -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":"2","method":"tasks/get","params":{"id":"task-8f21c"}}'

#4 · It waits for a clinician

json
{
  "result": {
    "id": "task-8f21c",
    "status": {
      "state": "input-required",
      "message": { "role": "agent", "parts": [{ "kind": "text", "text":
        "Held for a licensed human at p_north. Nothing has been sent to the payer." }] }
    }
  }
}
Do not resend
This is the correct state, not a failure. Sending the same request again creates a second task and a second thing for a clinician to review. Poll on a sane interval - minutes, not seconds.

#5 · Released, submitted, chased

A clinician reviews and releases. We submit to the payer and poll it on a schedule that tightens as the regulatory decision window closes. Your task moves back to working and stays there - this stage takes hours or days, and that is the payer, not us.

#6 · A decision

json
{
  "result": {
    "id": "task-8f21c",
    "status": { "state": "completed" },
    "artifacts": [{
      "name": "authorization",
      "parts": [{ "kind": "data", "data": {
        "outcome": "approved",
        "authorizationNumber": "BCBSF-AUTH-559214",
        "effectiveDate": "2026-10-01",
        "expirationDate": "2026-12-30",
        "payerId": "BCBSF"
      }}]
    }]
  }
}
completed does not mean approved
A denial is a decision, and it arrives as completed with "outcome": "denied" and the payer's stated reason. Read the outcome, not the state.