List Waitlist Requests¶
Retrieve a paginated list of patient waitlist requests with optional filtering by clinic, patient, status, priority, providers, appointment type, and date range.
Endpoint¶
Patient users (USER role) always see only their own requests; the patient_id query parameter is ignored for them and resolved from the JWT token.
Query Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
page |
integer | No | Page number (default 1, minimum 1). |
page_size |
integer | No | Items per page (default 20, max 100). |
sort_by |
string | No | Sort field. Allowed: created_at (default), updated_at, priority, date_range_start, date_range_end, available_slots. |
sort_dir |
string | No | Sort direction. Allowed: asc, desc (default). |
clinic_id |
string | No | Filter by clinic ID. |
patient_id |
string | No | Filter by patient ID. Clinician/staff only; ignored for patient users. |
status |
string | No | Filter by status. Allowed: ACTIVE, FULFILLED, CANCELLED, EXPIRED. |
priority |
integer | No | Filter by priority 1-5. |
start_date |
string (date) | No | Filter by request start date (YYYY-MM-DD). |
end_date |
string (date) | No | Filter by request end date (YYYY-MM-DD). |
provider_ids |
array | No | Filter by preferred provider IDs (comma-separated). |
appointment_types |
array | No | Filter by appointment types. Allowed values: INITIAL_EVAL, FOLLOW_UP. |
appointment_categories |
array | No | Filter by appointment category labels (comma-separated). |
payment_type |
string | No | Filter by payment type. Allowed: SELF_PAY, INSURANCE_PAY. |
include_waitlists |
boolean | No | When true, includes matched waitlist details and full invite details (slot times, status). Defaults to false. |
Request¶
curl --location '{base_url}/apis/v1/waitlist-requests?clinic_id=clinic-123&status=ACTIVE&page=1&page_size=20' \
--header 'Authorization: Bearer JWT_TOKEN'
Response¶
Success Response¶
Code: 200 OK
{
"code": 2000,
"message": "Success",
"data": [
{
"id": "req-123",
"clinic_id": "clinic-123",
"patient_id": "patient-012",
"preferred_providers": ["provider-345"],
"preferred_time_slots": ["MORNING"],
"preferred_days": ["MONDAY", "WEDNESDAY"],
"date_range_start": "2026-05-15",
"date_range_end": "2026-06-15",
"appointment_category_id": "2058",
"appointment_type": "INITIAL_EVAL",
"appointment_duration": 60,
"payment_type": "INSURANCE_PAY",
"priority": 3,
"status": "ACTIVE",
"notes": "Patient prefers morning appointments",
"patient": {
"id": "patient-012",
"first_name": "Jane",
"last_name": "Doe"
},
"matched_invites": [
{ "invite_id": "invite-234", "waitlist_id": "waitlist-456" }
],
"created_at": "2026-05-10T09:00:00Z",
"created_at_epoch_ms": 1746867600000,
"updated_at": "2026-05-10T09:00:00Z",
"created_by": "user-123",
"updated_by": "user-123"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total": 1,
"total_pages": 1
}
}
Response Fields¶
| Field | Type | Description |
|---|---|---|
data |
array | List of waitlist requests. Each item matches the shape returned by Get Waitlist Request. |
pagination.page |
integer | Current page number |
pagination.page_size |
integer | Number of items per page |
pagination.total |
integer | Total number of matching requests |
pagination.total_pages |
integer | Total number of pages |
When include_waitlists=true, each request additionally includes matched_waitlists (deduplicated waitlist details) and full invite details inside matched_invites.
Error Response¶
Code: 400 Bad Request
Notes¶
- The default sort is
created_at desc. include_waitlists=trueperforms additional lookups for waitlist and invite details; prefer it only when slot/status context is needed.