Taiga

Test statuses and webhook events

Trigger deterministic prior-authorization outcomes and inspect the signed webhook payloads.

Prior-authorization status changes are delivered to the HTTPS endpoint configured for your organization. Test requests use the same audit, outbox, signing, delivery, and retry path as live requests.

Trigger a test outcome

Create a prior authorization with test_mode: true. Test requests require valid, in-scope patient, coverage, provider, and facility IDs, but they are never submitted to a payer or added to Taiga's review queue.

Create request field
{
  "test_mode": true
}

The create request first produces a prior_authorization.received event. Use the returned request id to trigger one of the supported test outcomes:

curl --request POST \
  --url https://api-staging.taigabilling.com/api/prior-authorizations/v1/pa_test_123/test-status \
  --header "Authorization: Bearer $TAIGA_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"status":"NEEDS_INFORMATION"}'

status must be NEEDS_INFORMATION, PARTIALLY_APPROVED, or DENIED. A terminal test outcome cannot be changed; create a separate test request for each terminal scenario. The endpoint is available in staging and production, but it rejects every request that was not explicitly created with test_mode: true.

Delivery headers

Every delivery includes:

content-type: application/json
user-agent: Taiga-Webhooks/1.0
webhook-id: 0d81ce44-5c51-4ad3-a1d9-3bdb13cb98ad
webhook-timestamp: 1785733200
webhook-signature: v1,BASE64_HMAC_SHA256_SIGNATURE

Use webhook-id as the delivery idempotency key. Verify webhook-signature against the exact raw request body before parsing JSON. The signed content is:

{webhook-id}.{webhook-timestamp}.{raw-body}

The signature is HMAC-SHA256 encoded as standard Base64. The signing secret is returned when you configure or read your webhook endpoint.

NEEDS_INFORMATION

{
  "id": "0d81ce44-5c51-4ad3-a1d9-3bdb13cb98ad",
  "type": "prior_authorization.needs_information",
  "created_at": "2026-08-03T04:20:00.000Z",
  "data": {
    "prior_authorization": {
      "approved_unit_type": null,
      "approved_units": null,
      "authorized_service_lines": [],
      "billing_provider_npi": "1234567890",
      "determined_at": null,
      "effective_date": null,
      "expiration_date": null,
      "external_id": "integration-test-needs-information",
      "id": "pa_test_needs_information",
      "last_status_at": "2026-08-03T04:20:00.000Z",
      "portal_reference_number": null,
      "prior_authorization_number": null,
      "requirements_checked_at": "2026-08-03T04:20:00.000Z",
      "status": "NEEDS_INFORMATION",
      "status_message": "Test outcome: additional clinical information is required to continue review.",
      "submission_channel": null,
      "submission_destination": null,
      "submitted_at": null,
      "test_mode": true
    }
  }
}

PARTIALLY_APPROVED

The test result approves half of the requested units on the first service line, rounded down with a minimum of one.

{
  "id": "8752abf3-58ce-4ec7-a8ac-f82ad85210a7",
  "type": "prior_authorization.partially_approved",
  "created_at": "2026-08-03T04:25:00.000Z",
  "data": {
    "prior_authorization": {
      "approved_unit_type": "UNITS",
      "approved_units": 12,
      "authorized_service_lines": [
        {
          "approved_units": 12,
          "effective_date": "2026-08-04",
          "expiration_date": "2026-09-15",
          "modifiers": [],
          "procedure_code": "97110",
          "unit_type": "UNITS"
        }
      ],
      "billing_provider_npi": "1234567890",
      "determined_at": "2026-08-03T04:25:00.000Z",
      "effective_date": "2026-08-04",
      "expiration_date": "2026-09-15",
      "external_id": "integration-test-partial-approval",
      "id": "pa_test_partial_approval",
      "last_status_at": "2026-08-03T04:25:00.000Z",
      "portal_reference_number": "TEST-PORTAL-TIALAPPROVAL",
      "prior_authorization_number": "TEST-AUTH-TIALAPPROVAL",
      "requirements_checked_at": "2026-08-03T04:25:00.000Z",
      "status": "PARTIALLY_APPROVED",
      "status_message": "Test outcome: 12 units approved.",
      "submission_channel": "API",
      "submission_destination": "Taiga test payer",
      "submitted_at": "2026-08-03T04:25:00.000Z",
      "test_mode": true
    }
  }
}

DENIED

{
  "id": "3c447faf-450d-46b1-87ed-aad1bf891291",
  "type": "prior_authorization.denied",
  "created_at": "2026-08-03T04:30:00.000Z",
  "data": {
    "prior_authorization": {
      "approved_unit_type": null,
      "approved_units": null,
      "authorized_service_lines": [],
      "billing_provider_npi": "1234567890",
      "determined_at": "2026-08-03T04:30:00.000Z",
      "effective_date": null,
      "expiration_date": null,
      "external_id": "integration-test-denied",
      "id": "pa_test_denied",
      "last_status_at": "2026-08-03T04:30:00.000Z",
      "portal_reference_number": "TEST-PORTAL-PATESTDENIED",
      "prior_authorization_number": null,
      "requirements_checked_at": "2026-08-03T04:30:00.000Z",
      "status": "DENIED",
      "status_message": "Test outcome: the requested services did not meet plan requirements.",
      "submission_channel": "API",
      "submission_destination": "Taiga test payer",
      "submitted_at": "2026-08-03T04:30:00.000Z",
      "test_mode": true
    }
  }
}

Return any 2xx response after accepting an event. Failed deliveries are retried with exponential backoff and may be delivered more than once, so consumers must deduplicate by webhook-id.

On this page