Skip to main content
PATCH
/
api
/
v1
/
shipments
/
{id}
curl --request PATCH \
  --url https://anivahealth.com/api/v1/shipments/P-260415-4821 \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "pickup_date": "2026-04-16",
    "pickup_time_from": "10:00",
    "pickup_time_till": "13:00"
  }'
{
  "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": null,
  "shipped_at": null,
  "arrived_at": null,
  "created_at": "2026-04-03T14:30:00Z",
  "updated_at": "2026-04-03T15:10:00Z"
}
Update shipment details such as pickup schedule, package count, or notes. If schedule-related fields change, the existing logistics order is cancelled and a new one is created automatically. Updated schedule fields are validated against the pickup schedule rules.
Shipments cannot be modified after pickup. Attempting to update a shipment that has already been picked up returns 409 Conflict.
Requires the SHIPMENTS_MANAGE scope. Requests made with a key that lacks this scope return 403 Forbidden.

Request

Path parameters

id
string
required
Shipment reference ID (e.g., P-260415-4821).

Body parameters

All body parameters are optional — only include the fields you want to change.
pickup_date
string
New pickup date in YYYY-MM-DD format.
pickup_time_from
string
New earliest pickup time in HH:MM format.
pickup_time_till
string
New latest pickup time in HH:MM format.
package_count
integer
New number of packages.
weight
number
New weight in kg.
notes
string
New notes or remarks. Maximum 128 characters.

Response

On success, the API returns 200 OK with the updated shipment.
id
string
required
Shipment reference identifier.
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.
created_at
string
required
Creation timestamp (ISO 8601).
updated_at
string
Last update timestamp (ISO 8601). May be null.

Error responses

StatusDescription
400Validation error — e.g., invalid date or time format.
403Forbidden — missing SHIPMENTS_MANAGE scope or shipment outside access context.
404Shipment not found.
409Shipment cannot be modified after pickup.
500Internal server error.
curl --request PATCH \
  --url https://anivahealth.com/api/v1/shipments/P-260415-4821 \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "pickup_date": "2026-04-16",
    "pickup_time_from": "10:00",
    "pickup_time_till": "13:00"
  }'
{
  "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": null,
  "shipped_at": null,
  "arrived_at": null,
  "created_at": "2026-04-03T14:30:00Z",
  "updated_at": "2026-04-03T15:10:00Z"
}