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.