Coverage rules, prior auth requirements, cost-sharing, and bill error detection — one API, real payer data.
ck_live_ for live and ck_sb_ for sandbox.
Base URL: https://api.costkits.com
Coverage status and policy summary for a CPT code + carrier. Params: cpt_code, carrier (optional).
Prior authorization requirement — required, conditional, or not required. Params: cpt_code, carrier.
Deductible, copay, and coinsurance rules. Params: cpt_code, carrier.
How often a procedure is covered. Returns interval (years), age limits, condition keys. Params: cpt_code, carrier.
Medical necessity triggers and clinical criteria required for coverage approval. Pro only.
All covered procedures for a carrier with summary policy data. Params: carrier (optional).
All supported carriers with procedure and policy counts.
Submit bill line items. Returns flags for duplicates, unbundling, screening reclassification, and benchmark overcharges. Body: {line_items: [{cpt_code, charge, quantity}]}
Current tier, monthly quota, calls used, and quota reset date.
Generate a Stripe Customer Portal link to manage subscription or payment method.
Rotate your API key — old key revoked immediately, new key returned once.
Check coverage for a colonoscopy (CPT 45378) with Aetna:
curl "https://api.costkits.com/v1/coverage/summary?cpt_code=45378&carrier=aetna" \ -H "Authorization: Bearer ck_live_your_key_here" # Response { "cpt_code": "45378", "carrier": "aetna", "covered": true, "coverage_tier": "preventive", "notes": "Covered at 100% when billed as preventive (screening colonoscopy)" }
Analyze bill line items for errors (Pro):
curl -X POST https://api.costkits.com/v1/bill-analysis \ -H "Authorization: Bearer ck_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{"line_items":[{"cpt_code":"45378","charge":4500,"quantity":1},{"cpt_code":"45380","charge":1200,"quantity":1}]}' # Response { "risk_score": "medium", "flags": [{ "cpt_code": "45380", "flag_type": "unbundling", "severity": "medium", "message": "45380 is typically bundled with 45378 and should not be billed separately" }] }
All errors use RFC 9457 Problem Details format with Content-Type: application/problem+json.
401 INVALID_API_KEYKey missing, revoked, or malformed.
403 ENDPOINT_REQUIRES_PROEndpoint needs Pro tier.
429 QUOTA_EXCEEDEDMonthly call limit reached. Resets on the 1st.
429 RATE_LIMITEDToo many requests per second.
400 VALIDATION_ERRORMissing or invalid request parameters.
503 SERVICE_UNAVAILABLETemporary outage. Retry with backoff.
Get a Sandbox key instantly — no credit card required. Upgrade to Builder or Pro when you're ready to ship.
Get your API key →