Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.have-foresight.app/llms.txt

Use this file to discover all available pages before exploring further.

Foresight runs eligibility checks against payers (X12 270/271) and returns both the raw response and a normalized benefits view that’s safe to use directly in your application logic.

Synchronous check

POST /v1/insurance-policies/validate
Body:
{
  "insurancePolicyId": "pol_...",
  "serviceDate": "2026-05-15",
  "serviceTypes": ["medical_care", "prescription_drug"]
}
Returns within a few seconds for cooperative payers. For slow payers, the endpoint returns 202 Accepted with a jobId — poll /v1/eligibility/status?jobId=... or wait for eligibility.completed webhook.

Normalized response

{
  "data": {
    "status": "eligible",
    "policyActive": true,
    "checkedAt": "2026-05-03T19:42:11Z",
    "benefits": {
      "medical": {
        "deductible": {
          "individual": 150000,
          "family": 300000,
          "metInd": 47500
        },
        "outOfPocketMax": { "individual": 800000, "family": 1600000 },
        "copay": { "primaryCare": 2500, "specialist": 5000 },
        "coinsurance": { "inNetwork": 0.2, "outOfNetwork": 0.4 }
      },
      "pharmacy": {
        "tier1Copay": 1000,
        "tier2Copay": 4500,
        "tier3Coinsurance": 0.3
      }
    },
    "raw271": "ISA*00*..."
  }
}
All monetary values are integer cents. met fields show year-to-date amounts toward the deductible / OOP max.

When to recheck

  • Before submitting a claim with service date > 7 days from the last check.
  • After receiving a claim.denied with an eligibility-related CARC.
  • Whenever the patient updates their insurance.
Use POST /v1/eligibility/retry to force a fresh check, bypassing any cache.

Enhanced benefits

For deeper benefit detail (specific procedure-level coverage, prior-auth requirements, in-network status):
GET /v1/benefits/enhanced?insurancePolicyId=pol_... &
cptCode=99213

Reference