| Parameter | Type | Default | Example |
| limit | integer | 25 | 50 |
| offset | integer | 0 | 100 |
| payer_name | string | (none) | Cigna |
| plan_year | integer | (none) | 2024 |
| state | string | (none) | CA, WA |
| service | string | (none) | IOP, PHP |
Response (200 OK)
{
"plans": [
{
"id": "plan-uuid",
"payer_name": "Cigna",
"plan_name": "Cigna Open Access 2000",
"plan_year": 2024,
"state": "WA",
"plan_type": "PPO",
"coverage_data": {
"behavioral_health": {
"iop": {
"frequency_limit": "60 days per benefit year",
"requires_prior_auth": true,
"copay": "$30",
"deductible": "$1000",
"out_of_pocket_max": "$5000"
},
"php": {
"frequency_limit": "45 days per benefit year",
"requires_prior_auth": true
}
},
"medical_necessity_criteria": {
"description": "Review based on functional status, not service duration",
"gaf_threshold": 35,
"requires_clinical_documentation": true
},
"appeal_process": {
"initial_appeal_days": 30,
"expedited_days": 72,
"address": "Cigna Appeals, 900 Cottage Grove Rd, Hartford, CT 06152",
"phone": "1-800-CIGNA-CC",
"fax": "860-226-2847"
}
},
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-04-14T10:30:00Z"
}
],
"total": 487,
"limit": 25,
"offset": 0
}
GET /api/payer-plans/:id
Retrieve a specific payer plan.
Authentication: Required
Authorization: Any authenticated user
Credit Cost: None
Response (200 OK)
Full plan object with complete coverage_data JSONB structure.
Errors
404 Not Found — Plan doesn't exist
{ "error": "Plan not found" }
POST /api/payer-plans
Create or update a payer plan (admin only).
Authentication: Required
Authorization: admin role only
PHI Validation: Request scanned for PHI
Request Body
{
"payer_name": "Cigna",
"plan_name": "Cigna Open Access 2000",
"plan_year": 2024,
"state": "WA",
"plan_type": "PPO",
"coverage_data": {
"behavioral_health": {
"iop": {
"frequency_limit": "60 days per benefit year",
"requires_prior_auth": true,
"copay": "$30",
"deductible": "$1000"
}
},
"medical_necessity_criteria": {
"description": "Review based on functional status",
"gaf_threshold": 35
},
"appeal_process": {
"initial_appeal_days": 30,
"expedited_days": 72,
"address": "...",
"phone": "...",
"fax": "..."
}
}
}
Response (201 Created or 200 OK)
Returns created/updated plan.
Errors
403 Forbidden — User not admin
{ "error": "Unauthorized: admin role required" }
GET /api/payer-plans/search
Advanced plan search with JSONB filtering.
Authentication: Required
Authorization: Any authenticated user
Credit Cost: None
Query Parameters
| Parameter | Type | Example |
| payer | string | Cigna |
| state | string | WA, CA |
| gaf_threshold | integer | 35 |
| requires_prior_auth | boolean | true |
| service | string | IOP |