curl --request GET \
--url https://api.example.com/v1/patients \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.example.com/v1/patients"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.example.com/v1/patients', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/patients",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/patients"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/patients")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/patients")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"active": true,
"created_at": "2024-01-15T10:30:00Z",
"date_of_birth": "1990-01-15",
"email": "john.doe@example.com",
"first_name": "John",
"id": "550e8400-e29b-41d4-a716-446655440009",
"last_name": "Doe",
"phone_number": "+1234567890",
"updated_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"has_more": false,
"limit": 50,
"page": 1,
"total": 1
}
}{
"type": "validation_error",
"code": "invalid_parameter",
"message": "Field validation failed",
"param": "phone_number"
}List Patients
curl --request GET \
--url https://api.example.com/v1/patients \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.example.com/v1/patients"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.example.com/v1/patients', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/patients",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/patients"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/patients")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/patients")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"active": true,
"created_at": "2024-01-15T10:30:00Z",
"date_of_birth": "1990-01-15",
"email": "john.doe@example.com",
"first_name": "John",
"id": "550e8400-e29b-41d4-a716-446655440009",
"last_name": "Doe",
"phone_number": "+1234567890",
"updated_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"has_more": false,
"limit": 50,
"page": 1,
"total": 1
}
}{
"type": "validation_error",
"code": "invalid_parameter",
"message": "Field validation failed",
"param": "phone_number"
}Authorizations
Query Parameters
Filter by multiple workflow stage IDs (OR)
Include patients with no workflow stage (combines with workflow_stage_ids via OR)
Filter by tag IDs
Filter by insurance IDs
Filter by states
US States enum matching Prisma @map values
alabama, alaska, arizona, arkansas, california, colorado, connecticut, delaware, florida, georgia, hawaii, idaho, illinois, indiana, iowa, kansas, kentucky, louisiana, maine, maryland, massachusetts, michigan, minnesota, mississippi, missouri, montana, nebraska, nevada, new_hampshire, new_jersey, new_mexico, new_york, north_carolina, north_dakota, ohio, oklahoma, oregon, pennsylvania, rhode_island, south_carolina, south_dakota, tennessee, texas, utah, vermont, virginia, washington, west_virginia, wisconsin, wyoming, district_of_columbia, puerto_rico, virgin_islands, guam, northern_mariana_islands, american_samoa Filter by company location IDs
Filter by company organization IDs
Filter by created_from sources
Patient creation source enum matching Prisma
form, call, api, file, sms, fax, chat_agent, manual, bulk_import, eligibility, prior_auth Filter by eligibility check status
Eligibility check status. Bound to the PG enum "EligibilityStatus" (labels pending, active, inactive, failed) used by eligibility_checks.eligibility_status. payors.eligibility_check_status is a different PG type (eligibility_check_status, no failed) and is declared literally on the Payor model.
active, inactive, pending, failed Eligibility filter mode Eligibility filter mode — which payor tier to check, or any
any, primary, secondary, tertiary, quaternary Filter by sync status
Sync status filter for patient list queries
pending, completed Filter by plan name (partial match)
Filter by the insurance type of an active policy
Insurance plan type enum matching Prisma - X12 standard codes
01, 02, 03, 12, 13, 14, 15, 16, 17, 18, 19, 41, 42, 43, 47, 48, 49, AP, C1, CO, CP, D, DB, EP, FF, GP, HB, HD, HG, HM, HN, HP, HS, IN, IP, LC, LD, LI, LT, M, MA, MB, MC, MD, ME, MH, MI, MJ, MK, ML, MM, MN, MO, MP, MR, MT, OA, OT, PE, PL, PP, PR, PS, QM, RP, SA, SP, TF, WC, WU Filter by group description (partial match)
Filter by group number (partial match)
Fields to expand in the response
Allowed expand values for patient endpoints
tags, workflow_stage, assigned_user, referrals, policies, external_id_values x >= 11 <= x <= 100Filter options for patient status (active/inactive/all)
active, inactive, all Tag filter mode for patient queries
any, all, exclude_any, exclude_all Response
Successful Response
List response for patients
Show child attributes
Show child attributes
Pagination information for list responses.
Fields:
- has_more: Whether more items exist beyond this page
- total: Total number of items across all pages
- page: Current page number (1-based)
- limit: Number of items per page
Show child attributes
Show child attributes

