Skip to main content
POST
/
api
/
v1
/
shipments
curl --request POST \
  --url https://anivahealth.com/api/v1/shipments \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
    "pickup_date": "2026-04-15",
    "pickup_time_from": "09:00",
    "pickup_time_till": "12:00",
    "notes": "Handle with care — temperature-sensitive samples"
  }'
{
  "id": "P-260415-4821",
  "status": "pending",
  "logistics_provider": "go_express",
  "tracking_number": null,
  "origin": {
    "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": {
    "name": "LabClinic GmbH",
    "street": "Laborstraße",
    "house_number": "10",
    "postal_code": "80331",
    "city": "München",
    "country": "DE",
    "phone": null,
    "email": null
  },
  "notes": "Handle with care — temperature-sensitive samples",
  "shipped_at": null,
  "arrived_at": null
}
Create a shipment order from the specified origin location. The destination is automatically determined based on the location’s configuration.
Requires the SHIPMENTS_MANAGE scope. Requests made with a key that lacks this scope return 403 Forbidden.

Request

Body parameters

location_id
string
required
Origin test location UUID. The location must be active and within your API key’s access context. Use List Locations to find available location IDs.
pickup_date
string
required
Pickup date in YYYY-MM-DD format (e.g., 2026-04-15). Must be a weekday (Monday–Friday), today or in the future. Same-day pickups are not available after 16:00 Europe/Berlin.
pickup_time_from
string
required
Earliest pickup time in HH:MM format (e.g., 09:00). Must be between 09:00 and 17:00.
pickup_time_till
string
required
Latest pickup time in HH:MM format (e.g., 12:00). Must be between 09:00 and 17:00. The window (pickup_time_till - pickup_time_from) must be at least 2 hours.
package_count
integer
default:"1"
Number of packages. Defaults to 1.
weight
number
default:"1"
Weight in kg. Defaults to 1.
service
string
default:"ON"
Logistics service code. Defaults to "ON".
notes
string
Optional notes or remarks. Maximum 128 characters.

Response

On success, the API returns 201 Created with the new shipment.
id
string
required
Shipment reference identifier (e.g., P-260415-1234).
status
string
required
Shipment lifecycle status. One of pending, shipped, in_transit, delivered, fault, or cancelled.
logistics_provider
string
required
Logistics provider. One of go_express, dhl, or tof.
tracking_number
string
External tracking number from the logistics provider. May be null.
origin
object
Pickup address. May be null.
destination
object
Delivery address. Same structure as origin. May be null.
notes
string
Optional notes. May be null.
shipped_at
string
Actual pickup timestamp (ISO 8601). May be null.
arrived_at
string
Delivery timestamp (ISO 8601). May be null.

Error responses

StatusDescription
400Validation error — e.g., invalid date format, weekend date, pickup window too narrow, same-day cutoff exceeded.
403Forbidden — missing SHIPMENTS_MANAGE scope or location outside access context.
404Location not found or inactive.
500Internal server error.
curl --request POST \
  --url https://anivahealth.com/api/v1/shipments \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "location_id": "b7e2d1f5-3c4a-4e8b-a2f1-9d0c1e2f3a4b",
    "pickup_date": "2026-04-15",
    "pickup_time_from": "09:00",
    "pickup_time_till": "12:00",
    "notes": "Handle with care — temperature-sensitive samples"
  }'
{
  "id": "P-260415-4821",
  "status": "pending",
  "logistics_provider": "go_express",
  "tracking_number": null,
  "origin": {
    "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": {
    "name": "LabClinic GmbH",
    "street": "Laborstraße",
    "house_number": "10",
    "postal_code": "80331",
    "city": "München",
    "country": "DE",
    "phone": null,
    "email": null
  },
  "notes": "Handle with care — temperature-sensitive samples",
  "shipped_at": null,
  "arrived_at": null
}