Skip to main content
PATCH
/
api
/
v1
/
appointments
/
{id}
curl --request PATCH \
  --url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "scheduled_at": "2026-05-20T16:00:00+02:00",
    "location_id": "d8f3e1a2-4c5b-6d7e-8f9a-0b1c2d3e4f5a"
  }'
{
  "id": "c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a",
  "profile_id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
  "location_id": "d8f3e1a2-4c5b-6d7e-8f9a-0b1c2d3e4f5a",
  "scheduled_at": "2026-05-20T16:00:00+02:00",
  "status": "confirmed",
  "test_method": "practitioner",
  "created_at": "2026-04-01T09:45:00Z",
  "updated_at": "2026-04-10T11:30:00Z",
  "profile": {
    "id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
    "handle": null,
    "first_name": "Maria",
    "last_name": "Schmidt",
    "email": "maria.schmidt@example.com",
    "phone": "+4930123456789",
    "sex": 2,
    "date_of_birth": "1985-03-22",
    "height": 168,
    "weight": 65,
    "language": "de",
    "created_at": "2026-04-01T09:14:32Z",
    "updated_at": null
  },
  "panels": [
    {
      "panel_id": "f1c2d4a3-7b8e-4f2a-9c1d-2e3f4a5b6c7d",
      "added_at": "2026-04-01T09:50:00Z"
    }
  ],
  "shipments": []
}
Update appointment details such as the scheduled time or test location. Only appointments that have not yet had their blood draw confirmed can be modified.
Appointments cannot be modified after the blood draw has been confirmed or if already cancelled. Attempting to update such an appointment returns 409 Conflict.

Request

Path parameters

id
string
required
Unique identifier (UUID) of the appointment to update.

Body parameters

All body parameters are optional — only include the fields you want to change.
scheduled_at
string
New appointment datetime in ISO 8601 format (e.g., 2026-05-20T14:00:00Z or 2026-05-20T16:00:00+02:00). Must include a timezone designator — either Z or an explicit offset like +02:00; naive datetimes are rejected. Must be in the future.
location_id
string
UUID of the new test location. The location must exist and be active. Use List Locations to find available location IDs.

Response

On success, the API returns 200 OK with the updated appointment and its embedded profile.
id
string
required
Unique appointment identifier (UUID).
profile_id
string
required
UUID of the profile this appointment belongs to.
location_id
string
UUID of the test location. null for home kit appointments.
scheduled_at
string
Scheduled appointment datetime in ISO 8601 format, returned with the test location’s offset (e.g. 2026-05-20T16:00:00+02:00). May be null.
status
string
required
Current appointment status. One of pending, confirmed, blood_drawn, or cancelled. Lab-result completion granularity is derived from Get Results; finer-grained shipment progression from each entry in the inline shipments array (see below) followed to Get Shipment.
test_method
string
Method used for the blood draw. One of practitioner or home. May be null.
created_at
string
required
ISO 8601 timestamp of when the appointment was created.
updated_at
string
ISO 8601 timestamp of the last update. May be null.
profile
object
required
The patient profile associated with this appointment.
panels
AppointmentPanel[]
required
Panels currently attached to this appointment. Excludes cancelled attachments. Look up panel details (name, biomarkers) via List Panels.
shipments
AppointmentShipmentLink[]
required
Shipments linked to this appointment, oldest-link first. Empty array when no shipments are linked. Cross-reference each id against Get Shipment for the full shipment payload.

Error responses

StatusDescription
400Validation error — e.g., scheduled_at is in the past or invalid UUID format.
403Forbidden — your API key does not have access to this operation or the appointment/location is outside your access context.
404Appointment or location not found.
409Appointment cannot be modified (blood draw already confirmed or appointment is cancelled).
500Internal server error.
curl --request PATCH \
  --url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "scheduled_at": "2026-05-20T16:00:00+02:00",
    "location_id": "d8f3e1a2-4c5b-6d7e-8f9a-0b1c2d3e4f5a"
  }'
{
  "id": "c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a",
  "profile_id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
  "location_id": "d8f3e1a2-4c5b-6d7e-8f9a-0b1c2d3e4f5a",
  "scheduled_at": "2026-05-20T16:00:00+02:00",
  "status": "confirmed",
  "test_method": "practitioner",
  "created_at": "2026-04-01T09:45:00Z",
  "updated_at": "2026-04-10T11:30:00Z",
  "profile": {
    "id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
    "handle": null,
    "first_name": "Maria",
    "last_name": "Schmidt",
    "email": "maria.schmidt@example.com",
    "phone": "+4930123456789",
    "sex": 2,
    "date_of_birth": "1985-03-22",
    "height": 168,
    "weight": 65,
    "language": "de",
    "created_at": "2026-04-01T09:14:32Z",
    "updated_at": null
  },
  "panels": [
    {
      "panel_id": "f1c2d4a3-7b8e-4f2a-9c1d-2e3f4a5b6c7d",
      "added_at": "2026-04-01T09:50:00Z"
    }
  ],
  "shipments": []
}