Shipments
Create Shipment
Create a logistics shipment order with specified origin and destination
POST
Create a shipment order from the specified origin location. The destination is automatically determined based on the location’s configuration.
Request
Body parameters
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.
Optional appointment UUID to link this shipment to at creation time. The appointment must be
within your API key’s access context. The link surfaces inline as an entry in the shipment’s
appointments array, and conversely as an entry in the appointment’s shipments array. To link
additional appointments after creation, or remove the initial link, use Attach Appointments to
Shipment and Detach Appointments from
Shipment.Pickup date in
YYYY-MM-DD format (e.g., 2026-04-15), interpreted in the origin location’s
timezone. Must be a weekday (Monday–Friday), today or in the future. Same-day pickups are not
available after 16:00 Europe/Berlin.Earliest pickup time in
HH:MM format (e.g., 09:00), interpreted as wall-clock time in the
origin location’s timezone. Must be between 09:00 and 19:00.Latest pickup time in
HH:MM format (e.g., 12:00), interpreted as wall-clock time in the origin
location’s timezone. Must be between 09:00 and 19:00. The window (pickup_time_till - pickup_time_from) must be at least 2 hours.Number of packages. Defaults to
1.Weight in kg. Defaults to
1.Instructions for the courier at pickup (consignor remarks). When omitted, the pickup address’s
stored remarks are used (or none if the address has none). Maximum 128 characters.
Optional internal notes. Maximum 128 characters.
Response
On success, the API returns201 Created with the new shipment.
Shipment reference identifier (e.g.,
P2604151234).Shipment lifecycle status. One of
pending, in_transit, delivered, fault, or cancelled.Logistics provider. One of
go, dhl, or tof.External tracking number from the logistics provider. May be
null.Pickup address. May be
null.Delivery address. Same structure as
origin. May be null.Scheduled pickup window. May be
null.Optional notes. May be
null.Chronological lifecycle events from the logistics provider (oldest first). Each entry has a
status (free-form provider-sourced label) and time (ISO 8601). Empty array immediately after
creation; populated by the hourly sync as the provider reports events.Appointments linked to this shipment, oldest-link first. Each entry is
{ id, added_at };
cross-reference each id against Get Appointment.
Contains the appointment passed via appointment_id (if any) immediately after creation.Creation timestamp (ISO 8601).
Last update timestamp (ISO 8601). May be
null.Error responses
| Status | Description |
|---|---|
400 | Validation error — e.g., invalid date format, weekend date, pickup window too narrow, same-day cutoff exceeded. |
403 | Forbidden — your API key does not have access to this operation or the location is outside your access context. |
404 | Location not found or inactive, or appointment_id was provided but the appointment doesn’t exist. |
500 | Internal server error. |
502 | Logistics provider rejected the request. Includes the provider’s error message. |