Get patient
Returns full details of a single patient by fingerprint. ### Multi-Clinic Visibility This endpoint succeeds if the API key's clinic has an active `CustomerClinicConnection` to the patient — **even if another clinic originally created the record**. Ownership of medical records within the patient is determined by `performed_by_clinic_fp` on each record. ### What This Returns Only the patient entity itself. Related medical records (SOAP, vaccines, medications, diagnostics) are fetched separately from their respective endpoints.
Authorization
JWT-auth API key issued from the Vetigen Developer Portal. Pass as Authorization: Bearer YOUR_API_KEY.
In: header
Path Parameters
Patient fingerprint (patient_{ULID}).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -H "Authorization: Bearer $VETIGEN_API_KEY" \ https://api.vetigen.com/api/v1/patients/patient_01JABC9XYZKL4N7P3Q8TRM2ZDE{
"success": true,
"data": {
"fp": "patient_01JABC9XYZKL4N7P3Q8TRM2ZDE",
"name": "Boncuk",
"species": "dog",
"breed": "Golden Retriever",
"sex": "male",
"date_of_birth": "2019-06-15",
"weight_kg": 28.4,
"owner_customer_fp": "customer_01JABC...",
"created_at": "2024-11-03T09:24:17.000Z",
"updated_at": "2026-03-18T14:02:41.000Z"
},
"message": "OK"
}{
"success": false,
"error": {
"code": "AUTH.UNAUTHORIZED",
"message": "Authentication required.",
"severity": "error"
}
}{
"success": false,
"error": {
"code": "AUTH.FORBIDDEN",
"message": "Insufficient permissions.",
"severity": "error"
}
}{
"success": false,
"error": {
"code": "PATIENT.NOT_FOUND",
"message": "Patient with fingerprint patient_01JABC does not exist.",
"severity": "error"
}
}{
"success": false,
"error": {
"code": "AUTH.RATE_LIMITED",
"message": "Rate limit exceeded. Retry in 42 seconds.",
"severity": "warning"
}
}{
"success": false,
"error": {
"code": "PATIENT.NOT_FOUND",
"message": "Patient with fingerprint patient_01JABC does not exist.",
"severity": "error",
"details": {}
}
}Related
List patients
Returns a paginated list of patients accessible to the clinic associated with your API key. ### Access Model Patients in Vetigen are **global entities** — a single patient record may be shared across multiple clinics via `CustomerClinicConnection`. This endpoint returns patients that have an active connection to the caller's clinic, regardless of which clinic originally created the record. ### Sorting Results are sorted by `updated_at DESC` by default — most recently modified first. ### Pagination Use `page` and `page_size` query parameters. The response includes `has_more: true` when additional pages are available. Prefer cursor-style iteration over random page access for large datasets — page numbers may shift as records change. ### Common Errors - `PATIENT.ACCESS_DENIED` — API key's clinic has no connection to the requested patients. - `AUTH.RATE_LIMITED` — see rate-limit headers.
List calendar events
Returns calendar events (appointments, surgeries, vaccinations, checkups, emergencies, sales) for the clinic associated with your API key. ### Timezone `start_at` and `end_at` are always UTC ISO 8601. When displaying to end users, convert to the clinic's configured timezone (returned in the `Patient` owner's locale settings, not on the event itself). ### Date Range Both `start_date` and `end_date` are optional. If omitted, the default window is **today through 30 days ahead**. Max allowed range is 90 days per request. ### Event Types & Status Machine - **Types:** `APPOINTMENT`, `SURGERY`, `VACCINATION`, `CHECKUP`, `EMERGENCY`, `SALE` - **Status flow:** `SCHEDULED → CHECKED_IN → IN_PROGRESS → PENDING_CHECKOUT → CLOSED` (or `CANCELLED`)