Backwork
API Reference

Score claim denial risk

Scores a claim payload against five denial-risk gaps (medical necessity, coding support, prior authorization, documentation completeness, and frequency limits) using one batched TypeSafe AI (Jev) call.

Endpoint: POST /api/v1/claims/denial-risk

Availability: Live in production.

Authentication: API key in Authorization: Bearer <key> with the read scope.

Scores a claim payload against five denial-risk gaps (medical necessity, coding support, prior authorization, documentation completeness, and frequency limits) using one batched TypeSafe AI (Jev) call. Per-risk probabilities are combined in code into an overall risk level and a recommended action. Approved or not-required prior authorization clears that risk; other statuses are assessed against the supplied criteria. Returns 503 (SERVER_UNAVAILABLE) when TypeSafe is not configured and approved for sensitive data, and 400 (PHI_NOT_ALLOWED) when clinical documentation or criteria text contains patient identifiers. Requires prior authorization checker access.

Parameters

  • procedure_codes (body, required): CPT or HCPCS procedure codes.
  • diagnosis_codes (body): Optional ICD-10-CM diagnosis codes.
  • payer (body): Optional payer label.
  • state (body): Two-letter US state code.
  • prior_auth_status (body): Optional prior authorization status. approved and not_required clear the PA risk deterministically; other values are assessed against the supplied coverage criteria.
  • clinical_documentation (body): Optional de-identified clinical documentation text. Must not contain PHI.
  • coverage_criteria (body): Optional payer policy criteria text to score against. Payer policy text must not contain PHI.

Example request

curl -X POST "https://backworkhealth.com/api/v1/claims/denial-risk" \
  -H "Authorization: Bearer $BACKWORK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "procedure_codes": [
    "string"
  ]
}'

Example response (200)

{
  "success": true,
  "data": {
    "risk_level": "low",
    "recommended_action": "submit",
    "risks": {
      "medical_necessity_gap": {
        "probability": 0,
        "confidence": 0.5,
        "decision": "yes"
      },
      "coding_support_gap": {
        "probability": 0,
        "confidence": 0.5,
        "decision": "yes"
      },
      "prior_auth_gap": {
        "probability": 0,
        "confidence": 0.5,
        "decision": "yes"
      },
      "documentation_gap": {
        "probability": 0,
        "confidence": 0.5,
        "decision": "yes"
      },
      "frequency_limit_risk": {
        "probability": 0,
        "confidence": 0.5,
        "decision": "yes"
      }
    },
    "model": "string"
  },
  "meta": {
    "request_id": "string",
    "timestamp": "2026-01-15T10:30:00Z"
  }
}
POST
/claims/denial-risk

Authorization

bearerAuth
AuthorizationBearer <token>

API key in format: bwk_live_xxxxx. Keys issued before the rename (vrt_live_) remain valid. bwk_test_ keys work only on the sandbox.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/claims/denial-risk" \  -H "Content-Type: application/json" \  -d '{    "procedure_codes": [      "string"    ]  }'
{  "success": true,  "data": {    "risk_level": "low",    "recommended_action": "submit",    "risks": {      "medical_necessity_gap": {        "probability": 0,        "confidence": 0.5,        "decision": "yes"      },      "coding_support_gap": {        "probability": 0,        "confidence": 0.5,        "decision": "yes"      },      "prior_auth_gap": {        "probability": 0,        "confidence": 0.5,        "decision": "yes"      },      "documentation_gap": {        "probability": 0,        "confidence": 0.5,        "decision": "yes"      },      "frequency_limit_risk": {        "probability": 0,        "confidence": 0.5,        "decision": "yes"      }    },    "model": "string"  },  "meta": {    "request_id": "string",    "timestamp": "2019-08-24T14:15:22Z"  }}

Last updated on