Skip to main content
GET
/
api
/
v1
/
appointments
/
{id}
/
shipments
curl --request GET \
  --url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a/shipments \
  --header 'x-api-key: YOUR_API_KEY'
[
  {
    "id": "P2604154821",
    "status": "in_transit",
    "logistics_provider": "go",
    "tracking_number": "GO1234567890",
    "origin": {
      "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
      "name": "Aniva Berlin Mitte",
      "street": "Unter den Linden",
      "house_number": "42",
      "postal_code": "10117",
      "city": "Berlin",
      "country": "DE",
      "phone": "+4930987654321",
      "email": "berlin-mitte@anivahealth.com"
    },
    "destination": {
      "location_id": null,
      "name": "LabClinic GmbH",
      "street": "Laborstraße",
      "house_number": "10",
      "postal_code": "80331",
      "city": "München",
      "country": "DE",
      "phone": null,
      "email": null
    },
    "pickup": {
      "from": "2026-04-15T09:00:00+02:00",
      "till": "2026-04-15T12:00:00+02:00",
      "timezone": "Europe/Berlin"
    },
    "notes": null,
    "status_updates": [
      { "status": "Shipment picked up", "time": "2026-04-15T09:42:00Z" },
      { "status": "Receiving station", "time": "2026-04-15T11:18:00Z" }
    ],
    "created_at": "2026-04-14T16:00:00Z",
    "updated_at": "2026-04-15T11:20:00Z"
  }
]
Retrieve the full shipment objects linked to a given appointment. Each shipment includes a status_updates array of lifecycle events observed by the logistics provider — use this to derive in-transit / delivered state for the appointment without polling the appointment status itself. The lighter shipments array on the appointment response itself (see Get Appointment) carries the same link set as { id, added_at } entries — use that when you only need to know what’s linked. This endpoint is the bulk full-payload shortcut. Shipments are linked to appointments at creation time via the appointment_id field on Create Shipment, and managed afterwards via Attach Shipments to Appointment and the inverse Attach Appointments to Shipment. Returns an empty array when no shipments are linked.
Shipments returned here are refreshed from the logistics provider if their last sync was more than 3 hours ago, otherwise they’re served from the DB. Stale-by-up-to-3-hours is the trade-off to avoid re-fetching on every poll. For force-refreshed truth on a single shipment, use Get Shipment.
Requires shipments_manage or test_sessions_view scope.

Request

Path parameters

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

Response

On success, the API returns 200 OK with an array of shipment objects. See Get Shipment for the full field list — each entry has the same shape, including status_updates.

Error responses

StatusDescription
400Invalid ID format.
403Forbidden — your API key does not have access to this operation, or the appointment is outside your scope.
404Appointment not found.
500Internal server error.
curl --request GET \
  --url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a/shipments \
  --header 'x-api-key: YOUR_API_KEY'
[
  {
    "id": "P2604154821",
    "status": "in_transit",
    "logistics_provider": "go",
    "tracking_number": "GO1234567890",
    "origin": {
      "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
      "name": "Aniva Berlin Mitte",
      "street": "Unter den Linden",
      "house_number": "42",
      "postal_code": "10117",
      "city": "Berlin",
      "country": "DE",
      "phone": "+4930987654321",
      "email": "berlin-mitte@anivahealth.com"
    },
    "destination": {
      "location_id": null,
      "name": "LabClinic GmbH",
      "street": "Laborstraße",
      "house_number": "10",
      "postal_code": "80331",
      "city": "München",
      "country": "DE",
      "phone": null,
      "email": null
    },
    "pickup": {
      "from": "2026-04-15T09:00:00+02:00",
      "till": "2026-04-15T12:00:00+02:00",
      "timezone": "Europe/Berlin"
    },
    "notes": null,
    "status_updates": [
      { "status": "Shipment picked up", "time": "2026-04-15T09:42:00Z" },
      { "status": "Receiving station", "time": "2026-04-15T11:18:00Z" }
    ],
    "created_at": "2026-04-14T16:00:00Z",
    "updated_at": "2026-04-15T11:20:00Z"
  }
]