Skip to main content
POST
/
api
/
v1
/
appointments
curl --request POST \
  --url https://anivahealth.com/api/v1/appointments \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "profile_id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
    "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
    "scheduled_at": "2026-05-15T10:30:00Z"
  }'
{
  "id": "c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a",
  "profile_id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
  "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
  "scheduled_at": "2026-05-15T10:30:00Z",
  "status": "scheduled",
  "test_method": "practitioner",
  "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"
  }
}
Schedule a blood draw appointment for a patient profile at a specific test location. Once created, the appointment enters scheduled status. Use Add Panels to attach blood test panels before confirming the blood draw.
Requires the TEST_SESSIONS_SCHEDULE scope. Requests made with a key that lacks this scope return 403 Forbidden.

Request

Body parameters

profile_id
string
required
UUID of the patient profile to create the appointment for.
location_id
string
required
UUID of the test location where the blood draw will take place. Use List Locations to find available location IDs.
scheduled_at
string
required
Date and time of the appointment in ISO 8601 format (e.g., 2026-05-15T10:30:00Z). Must be a datetime in the future.

Response

On success, the API returns 201 Created with the new appointment.
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 date and time in ISO 8601 format. May be null.
status
string
required
Current appointment status. One of scheduled, confirmed, completed, or cancelled.
test_method
string
Method used for the blood draw. One of practitioner or home. May be null.
profile
object
required
The patient profile associated with this appointment.

Error responses

StatusDescription
400Validation error — e.g., scheduled_at is in the past.
403Forbidden — missing TEST_SESSIONS_SCHEDULE scope.
404Profile or location not found.
500Internal server error.
curl --request POST \
  --url https://anivahealth.com/api/v1/appointments \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "profile_id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
    "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
    "scheduled_at": "2026-05-15T10:30:00Z"
  }'
{
  "id": "c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a",
  "profile_id": "a3f1c2d4-8b7e-4f2a-9c1d-2e3f4a5b6c7d",
  "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
  "scheduled_at": "2026-05-15T10:30:00Z",
  "status": "scheduled",
  "test_method": "practitioner",
  "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"
  }
}