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`)
Authorization
JWT-auth API key issued from the Vetigen Developer Portal. Pass as Authorization: Bearer YOUR_API_KEY.
In: header
Query Parameters
Inclusive lower bound (UTC).
date-timeExclusive upper bound (UTC). Max 90 days after start_date.
date-timeFilter by event type.
"APPOINTMENT" | "SURGERY" | "VACCINATION" | "CHECKUP" | "EMERGENCY" | "SALE"Filter by event status.
"SCHEDULED" | "CHECKED_IN" | "IN_PROGRESS" | "PENDING_CHECKOUT" | "CLOSED" | "CANCELLED"Response Body
application/json
application/json
application/json
application/json
application/json
curl -H "Authorization: Bearer $VETIGEN_API_KEY" \ "https://api.vetigen.com/api/v1/calendar/events?start_date=2026-04-15T00:00:00Z&end_date=2026-04-22T00:00:00Z&type=APPOINTMENT"{
"success": true,
"data": {
"items": [
{
"fp": "calevt_01JABC...",
"title": "Vaccination — Boncuk",
"type": "VACCINATION",
"status": "SCHEDULED",
"start_at": "2026-04-15T09:30:00.000Z",
"end_at": "2026-04-15T10:00:00.000Z",
"patient_fp": "patient_01JABC...",
"assigned_user_fp": "user_01JABC..."
}
],
"total": 47,
"page": 1,
"page_size": 20,
"has_more": true
}
}{
"success": false,
"error": {
"code": "CALENDAR.INVALID_RANGE",
"message": "Date range must not exceed 90 days.",
"severity": "error"
}
}{
"success": false,
"error": {
"code": "AUTH.UNAUTHORIZED",
"message": "Authentication required.",
"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
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.
Get SOAP record
Returns a single SOAP (Subjective / Objective / Assessment / Plan) examination record by fingerprint. ### Ownership & Visibility SOAP records are global entities — multiple clinics may view the same record via the patient's `CustomerClinicConnection`, but only the clinic matching `performed_by_clinic_fp` can modify it. This endpoint is **read-only** and respects visibility only. ### Status State Machine - `DRAFT` → `IN_PROGRESS` → `SIGNED` → `LOCKED` - A `SIGNED` record is immutable; corrections require a new amendment record. ### Plan Items The `plan` field contains free-text summary. Structured plan items (medications, labs, vaccines, follow-up appointments, todos) live in a separate polymorphic `plan_items` collection not returned here — fetch via the upcoming `/api/v1/soap/{fp}/plan-items` endpoint.