Shipping to shops
Called with warehouse account keys. A key only sees its own account's data. Every example uses the same sample brand, order and item, so you can follow one item from call to call.
http://62.169.23.239:8001/api/v1Auth Bearer token13 endpointsEndpoints
- GET/warehouse/transport/ready-boxesList boxes ready to ship
- GET/warehouse/transport/transportersList carriers
- GET/warehouse/transport/transporters/{transporter_id}Retrieve a carrier
- POST/warehouse/transport/dispatchesCreate a dispatch
- GET/warehouse/transport/dispatchesList dispatches
- GET/warehouse/transport/dispatches/{dispatch_id}Retrieve a dispatch
- PUT/warehouse/transport/dispatches/{dispatch_id}Update a dispatch
- POST/warehouse/transport/dispatches/{dispatch_id}/proceedRelease a dispatch
- POST/warehouse/transport/dispatches/{dispatch_id}/report-issueReport a dispatch issue
- GET/warehouse/transport/dispatches/{dispatch_id}/manifestGet a dispatch manifest
- GET/warehouse/transport/dispatches/{dispatch_id}/live-trackTrack a dispatch live
- GET/warehouse/transport/dispatches/{dispatch_id}/workspaceGet dispatch workspace
- POST/warehouse/transport/dispatches/{dispatch_id}/conversationOpen the carrier chat
List boxes ready to ship#
Requires scope warehouse_transport:read
Sealed boxes this warehouse could hand to a transporter right now.
Returns
HTTP 200- itemsarray of objectsRequired
The objects on this page.
+Show 4 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- product_namestring
Defaults to
— - unit_countinteger
Defaults to
0 - received_attimestampRequired
- totalinteger
Total count.
Defaults to
0
curl http://62.169.23.239:8001/api/v1/warehouse/transport/ready-boxes \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"items": [
{
"box_id": "BOX-F4E1A9-0003",
"product_name": "Trail Tee",
"unit_count": 24,
"received_at": "2026-10-09T09:30:00Z"
}
],
"total": 1
}List carriers#
Requires scope warehouse_transport:read
List registered transporters for carrier assignment.
Parameters
- searchstringquery
- limitintegerquery
Defaults to
50
Returns
HTTP 200- itemsarray of objectsRequired
The objects on this page.
+Show 8 child attributesHide child attributes
- transporter_idstringRequired
- namestringRequired
- company_namestring | null
- service_regionstring | null
- default_vehicle_platestring | null
- default_contactstring | null
- is_verifiedboolean
Defaults to
false - distance_kmnumber | null
From the transporter's last logged GPS position; None when unknown.
curl http://62.169.23.239:8001/api/v1/warehouse/transport/transporters \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"items": [
{
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"name": "Northwind Apparel",
"company_name": "FastFreight BV",
"service_region": "Benelux",
"default_vehicle_plate": "VX-123-B",
"default_contact": "+31687654321",
"is_verified": true,
"distance_km": 1
}
]
}Retrieve a carrier#
Requires scope warehouse_transport:read
Transporter profile card — rating, plate, online status.
Parameters
- transporter_idstringpathRequired
Returns
HTTP 200- transporter_idstringRequired
- namestringRequired
- company_namestring | null
- role_titlestring
Defaults to
Lead Driver - service_regionstring | null
- vehicle_platestring | null
- default_contactstring | null
- ratingnumber
Defaults to
0 - delivery_countinteger
Defaults to
0 - is_verifiedboolean
Defaults to
false - status_labelstring
Defaults to
OFFLINE - avatar_urlstring | null
curl http://62.169.23.239:8001/api/v1/warehouse/transport/transporters/f74f2d3e-d02f-58f6-b03b-795142c1e5d9 \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"name": "Northwind Apparel",
"company_name": "FastFreight BV",
"role_title": "Lead Driver",
"service_region": "Benelux",
"vehicle_plate": "VX-123-B",
"default_contact": "+31687654321",
"rating": 4.8,
"delivery_count": 24,
"is_verified": true,
"status_label": "OFFLINE",
"avatar_url": "https://files.skannit.example/avatar.png"
}Create a dispatch#
Requires scope warehouse_transport:write
Create a transport dispatch draft from sealed boxes this warehouse holds.
Request body
- box_idsarray of stringsRequired
Ids of the boxes this call acts on.
- retail_idstringRequired
Destination retail account (users.user_id, role='Retail')
- backorder_idstring | null
The pending retail_backorders row this dispatch settles, if any. Moves it to 'allocated' now and 'fulfilled' once this dispatch is delivered.
- estimated_deliverydate | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- dispatch_notesstring | null
- carrier_typestringOne of
skannit_riderexternal_carrierbrand_fleetDefaults to
skannit_rider - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- transport_modestringOne of
localinternationalDefaults to
local - transporter_idstring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
Returns
HTTP 201- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transport_modestringOne of
localinternationalDefaults to
local - estimated_deliverydate | null
- eta_labelstring | null
- is_delayedboolean
Defaults to
false - journey_progress_percentinteger
Defaults to
0 - journey_progress_labelstring
Defaults to
- conversation_idstring | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- origin_gps_latnumber | null
Fixed endpoints, so the journey map can plot where the shipment runs between rather than only the legs the driver pinned.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- retail_idstring | null
The shop (retail account) id.
- retail_namestring | null
- dispatch_notesstring | null
- carrier_typestringRequiredOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- carrier_namestring | null
- carrier_tracking_urlstring | null
- transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- itemsarray of objects
The objects on this page.
+Show 2 child attributesHide child attributes
- product_namestringRequired
- quantityintegerRequired
Number of units.
- boxesarray of objects
+Show 7 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countintegerRequired
- unit_tokensarray of strings
Tokens of the items involved.
- statusstringRequired
Current state of the object. See the allowed values.
One ofnormalflaggeddelayedin_transitdelivered - last_locationstring | null
- last_location_attimestamp | null
- milestonesarray of objects
+Show 23 child attributesHide child attributes
- milestone_idstringRequired
- event_typestringRequired
- titlestringRequired
- detailstring | null
- occurred_attimestamp | null
Null until the leg is reached — arrival time.
- is_currentboolean
Defaults to
false - statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - location_namestring | null
- planned_attimestamp | null
- gps_latnumber | null
- gps_lngnumber | null
- departed_attimestamp | null
Departure side of the leg — null until the driver taps Depart.
- departed_gps_latnumber | null
- departed_gps_lngnumber | null
- place_namestring | null
Human-readable places, resolved on-device at capture time. The UI shows these instead of coordinates.
- departed_place_namestring | null
- transporter_idstring | null
- transporter_namestring | null
- estimated_arrival_attimestamp | null
Projection from the driver's own observed speed across completed legs. Null until at least one leg has been completed — before that there is no measured speed and any figure would be invented.
- is_delayedboolean
Server-computed so two clients can't disagree; the device clock belongs to the driver and is not trustworthy for this.
Defaults to
false - delay_minutesinteger | null
Signed minutes late (positive) or early (negative) vs planned_at.
- alertobject | null
+Show 5 child attributesHide child attributes
- titlestringRequired
- detailstringRequired
- severitystringOne of
criticalwarninginfoDefaults to
warning - acknowledgedboolean
Defaults to
false - route_deviation_kmnumber | null
- dispatched_attimestamp | null
- picked_up_attimestamp | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- pod_photo_urlstring | null
- created_attimestampRequired
When the object was created (ISO 8601, UTC).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- last_updated_labelstring | null
- repair_request_idinteger | null
Set on a repair leg (consumer <-> repair shop); the transporter may decline it before pickup.
- repair_legstring | null
- logistics_planobject | null
+Show 2 child attributesHide child attributes
- boxesarray of objects
+Show 6 child attributesHide child attributes
- idstringRequired
- modestringRequiredOne of
samemixed - capacityintegerRequired
- regionstring | null
- linesarray of objectsRequired
Line items, one per variant.
+Show 5 child attributesHide child attributes
- colorstringRequired
Colour name, exactly as on the product's variants.
- sizestringRequired
Size name, exactly as on the product's variants.
- batch_skustring | null
SKU printed on the label for this variant in this batch.
- quantityintegerRequired
Number of units.
- volume_lstring | null
Packaged volume of one unit, in litres. Used to size boxes.
- created_atstring | null
When the object was created (ISO 8601, UTC).
- destinationsarray of objects
+Show 8 child attributesHide child attributes
- idstringRequired
- namestringRequired
- citystring | null
- countrystringRequired
- arrival_datestring | null
- prioritystringOne of
lowstandardurgentDefaults to
standard - box_idsarray of strings
Ids of the boxes this call acts on.
- instructionsstring
Defaults to
- custody_tx_queuedinteger | null
Number of custody-transfer chain transactions successfully queued for this status change (factory->transporter on take-custody, transporter->retail on delivery). Null when the action taken didn't trigger a custody transfer (e.g. plain detail fetch).
curl -X POST http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches \
-H "Authorization: Bearer $SKANNIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"box_ids": [
"BOX-F4E1A9-0003"
],
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"backorder_id": "aae4bc0a-57f9-5c01-bc81-d47bdbd8232a",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"estimated_delivery": "2026-10-11"
}'{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"transport_mode": "local",
"estimated_delivery": "2026-11-20",
"eta_label": "Arrives Sat 11 Oct",
"is_delayed": false,
"journey_progress_percent": 72,
"journey_progress_label": "",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"origin_station_name": "Rotterdam DC",
"origin_station_detail": "Waalhaven 12, Rotterdam",
"destination_hub_name": "Northwind Amsterdam",
"destination_hub_detail": "Kalverstraat 1, Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"retail_name": "Northwind Amsterdam",
"dispatch_notes": "Deliver before 10:00",
"carrier_type": "skannit_rider",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"carrier_name": "Carrier",
"carrier_tracking_url": "https://files.skannit.example/carrier_tracking.png",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"items": [
{
"product_name": "Trail Tee",
"quantity": 1
}
],
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal",
"last_location": "A15 near Rotterdam",
"last_location_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"event_type": "picked_up",
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"occurred_at": null,
"is_current": false,
"status": "pending",
"sequence_position": 1,
"mode": "road",
"location_name": "Rotterdam DC",
"planned_at": null,
"gps_lat": 51.9244,
"gps_lng": 4.4777,
"departed_at": null,
"departed_gps_lat": 51.9244,
"departed_gps_lng": 4.4777,
"place_name": "Rotterdam",
"departed_place_name": "Departed place",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"estimated_arrival_at": null,
"is_delayed": false,
"delay_minutes": 1
}
],
"alert": {
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"severity": "critical",
"acknowledged": false,
"route_deviation_km": 1
},
"dispatched_at": null,
"picked_up_at": null,
"delivered_at": null,
"pod_photo_url": "https://files.skannit.example/pod_photo.png",
"created_at": "2026-10-09T09:30:00Z",
"updated_at": "2026-10-09T09:30:00Z",
"last_updated_label": "2 minutes ago",
"repair_request_id": 1,
"repair_leg": "repair leg",
"logistics_plan": {
"boxes": [
{
"id": "SKN-CRT-00402-9A1C3E7F",
"mode": "same",
"capacity": 1,
"region": "EU",
"lines": [
{
"color": "White",
"size": "M",
"batch_sku": "TT-100-WHT-M",
"quantity": 1,
"volume_l": 0.5
}
],
"created_at": "2026-10-09T09:30:00Z"
}
],
"destinations": [
"in_store"
]
},
"custody_tx_queued": 1
}List dispatches#
Requires scope warehouse_transport:read
Parameters
- statusstringquery
draft | assigned | in_transit | delivered
- limitintegerquery
Defaults to
50
Returns
HTTP 200- itemsarray of objectsRequired
The objects on this page.
+Show 15 child attributesHide child attributes
- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- origin_station_namestring | null
- destination_hub_namestring | null
- estimated_deliverydate | null
- driver_namestring | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- dispatched_attimestamp | null
Null until the factory calls proceed-to-dispatch; an "assigned" row with dispatched_at=None still needs factory release before the transporter's take-custody endpoint will accept it (409s otherwise).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- totalinteger
Total count.
Defaults to
0
curl http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"items": [
{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"origin_station_name": "Rotterdam DC",
"destination_hub_name": "Northwind Amsterdam",
"estimated_delivery": "2026-11-20",
"driver_name": "Jan de Vries",
"delivered_at": null,
"dispatched_at": null,
"updated_at": "2026-10-09T09:30:00Z"
}
],
"total": 1
}Retrieve a dispatch#
Requires scope warehouse_transport:read
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Returns
HTTP 200- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transport_modestringOne of
localinternationalDefaults to
local - estimated_deliverydate | null
- eta_labelstring | null
- is_delayedboolean
Defaults to
false - journey_progress_percentinteger
Defaults to
0 - journey_progress_labelstring
Defaults to
- conversation_idstring | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- origin_gps_latnumber | null
Fixed endpoints, so the journey map can plot where the shipment runs between rather than only the legs the driver pinned.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- retail_idstring | null
The shop (retail account) id.
- retail_namestring | null
- dispatch_notesstring | null
- carrier_typestringRequiredOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- carrier_namestring | null
- carrier_tracking_urlstring | null
- transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- itemsarray of objects
The objects on this page.
+Show 2 child attributesHide child attributes
- product_namestringRequired
- quantityintegerRequired
Number of units.
- boxesarray of objects
+Show 7 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countintegerRequired
- unit_tokensarray of strings
Tokens of the items involved.
- statusstringRequired
Current state of the object. See the allowed values.
One ofnormalflaggeddelayedin_transitdelivered - last_locationstring | null
- last_location_attimestamp | null
- milestonesarray of objects
+Show 23 child attributesHide child attributes
- milestone_idstringRequired
- event_typestringRequired
- titlestringRequired
- detailstring | null
- occurred_attimestamp | null
Null until the leg is reached — arrival time.
- is_currentboolean
Defaults to
false - statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - location_namestring | null
- planned_attimestamp | null
- gps_latnumber | null
- gps_lngnumber | null
- departed_attimestamp | null
Departure side of the leg — null until the driver taps Depart.
- departed_gps_latnumber | null
- departed_gps_lngnumber | null
- place_namestring | null
Human-readable places, resolved on-device at capture time. The UI shows these instead of coordinates.
- departed_place_namestring | null
- transporter_idstring | null
- transporter_namestring | null
- estimated_arrival_attimestamp | null
Projection from the driver's own observed speed across completed legs. Null until at least one leg has been completed — before that there is no measured speed and any figure would be invented.
- is_delayedboolean
Server-computed so two clients can't disagree; the device clock belongs to the driver and is not trustworthy for this.
Defaults to
false - delay_minutesinteger | null
Signed minutes late (positive) or early (negative) vs planned_at.
- alertobject | null
+Show 5 child attributesHide child attributes
- titlestringRequired
- detailstringRequired
- severitystringOne of
criticalwarninginfoDefaults to
warning - acknowledgedboolean
Defaults to
false - route_deviation_kmnumber | null
- dispatched_attimestamp | null
- picked_up_attimestamp | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- pod_photo_urlstring | null
- created_attimestampRequired
When the object was created (ISO 8601, UTC).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- last_updated_labelstring | null
- repair_request_idinteger | null
Set on a repair leg (consumer <-> repair shop); the transporter may decline it before pickup.
- repair_legstring | null
- logistics_planobject | null
+Show 2 child attributesHide child attributes
- boxesarray of objects
+Show 6 child attributesHide child attributes
- idstringRequired
- modestringRequiredOne of
samemixed - capacityintegerRequired
- regionstring | null
- linesarray of objectsRequired
Line items, one per variant.
+Show 5 child attributesHide child attributes
- colorstringRequired
Colour name, exactly as on the product's variants.
- sizestringRequired
Size name, exactly as on the product's variants.
- batch_skustring | null
SKU printed on the label for this variant in this batch.
- quantityintegerRequired
Number of units.
- volume_lstring | null
Packaged volume of one unit, in litres. Used to size boxes.
- created_atstring | null
When the object was created (ISO 8601, UTC).
- destinationsarray of objects
+Show 8 child attributesHide child attributes
- idstringRequired
- namestringRequired
- citystring | null
- countrystringRequired
- arrival_datestring | null
- prioritystringOne of
lowstandardurgentDefaults to
standard - box_idsarray of strings
Ids of the boxes this call acts on.
- instructionsstring
Defaults to
- custody_tx_queuedinteger | null
Number of custody-transfer chain transactions successfully queued for this status change (factory->transporter on take-custody, transporter->retail on delivery). Null when the action taken didn't trigger a custody transfer (e.g. plain detail fetch).
curl http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"transport_mode": "local",
"estimated_delivery": "2026-11-20",
"eta_label": "Arrives Sat 11 Oct",
"is_delayed": false,
"journey_progress_percent": 72,
"journey_progress_label": "",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"origin_station_name": "Rotterdam DC",
"origin_station_detail": "Waalhaven 12, Rotterdam",
"destination_hub_name": "Northwind Amsterdam",
"destination_hub_detail": "Kalverstraat 1, Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"retail_name": "Northwind Amsterdam",
"dispatch_notes": "Deliver before 10:00",
"carrier_type": "skannit_rider",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"carrier_name": "Carrier",
"carrier_tracking_url": "https://files.skannit.example/carrier_tracking.png",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"items": [
{
"product_name": "Trail Tee",
"quantity": 1
}
],
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal",
"last_location": "A15 near Rotterdam",
"last_location_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"event_type": "picked_up",
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"occurred_at": null,
"is_current": false,
"status": "pending",
"sequence_position": 1,
"mode": "road",
"location_name": "Rotterdam DC",
"planned_at": null,
"gps_lat": 51.9244,
"gps_lng": 4.4777,
"departed_at": null,
"departed_gps_lat": 51.9244,
"departed_gps_lng": 4.4777,
"place_name": "Rotterdam",
"departed_place_name": "Departed place",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"estimated_arrival_at": null,
"is_delayed": false,
"delay_minutes": 1
}
],
"alert": {
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"severity": "critical",
"acknowledged": false,
"route_deviation_km": 1
},
"dispatched_at": null,
"picked_up_at": null,
"delivered_at": null,
"pod_photo_url": "https://files.skannit.example/pod_photo.png",
"created_at": "2026-10-09T09:30:00Z",
"updated_at": "2026-10-09T09:30:00Z",
"last_updated_label": "2 minutes ago",
"repair_request_id": 1,
"repair_leg": "repair leg",
"logistics_plan": {
"boxes": [
{
"id": "SKN-CRT-00402-9A1C3E7F",
"mode": "same",
"capacity": 1,
"region": "EU",
"lines": [
{
"color": "White",
"size": "M",
"batch_sku": "TT-100-WHT-M",
"quantity": 1,
"volume_l": 0.5
}
],
"created_at": "2026-10-09T09:30:00Z"
}
],
"destinations": [
"in_store"
]
},
"custody_tx_queued": 1
}Update a dispatch#
Requires scope warehouse_transport:write
Save draft — route, metadata, transporter details. Boxes are fixed at creation.
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Request body
- estimated_deliverydate | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- dispatch_notesstring | null
- carrier_typestring | nullOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- transport_modestring | nullOne of
localinternational - transporter_idstring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
Returns
HTTP 200- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transport_modestringOne of
localinternationalDefaults to
local - estimated_deliverydate | null
- eta_labelstring | null
- is_delayedboolean
Defaults to
false - journey_progress_percentinteger
Defaults to
0 - journey_progress_labelstring
Defaults to
- conversation_idstring | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- origin_gps_latnumber | null
Fixed endpoints, so the journey map can plot where the shipment runs between rather than only the legs the driver pinned.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- retail_idstring | null
The shop (retail account) id.
- retail_namestring | null
- dispatch_notesstring | null
- carrier_typestringRequiredOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- carrier_namestring | null
- carrier_tracking_urlstring | null
- transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- itemsarray of objects
The objects on this page.
+Show 2 child attributesHide child attributes
- product_namestringRequired
- quantityintegerRequired
Number of units.
- boxesarray of objects
+Show 7 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countintegerRequired
- unit_tokensarray of strings
Tokens of the items involved.
- statusstringRequired
Current state of the object. See the allowed values.
One ofnormalflaggeddelayedin_transitdelivered - last_locationstring | null
- last_location_attimestamp | null
- milestonesarray of objects
+Show 23 child attributesHide child attributes
- milestone_idstringRequired
- event_typestringRequired
- titlestringRequired
- detailstring | null
- occurred_attimestamp | null
Null until the leg is reached — arrival time.
- is_currentboolean
Defaults to
false - statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - location_namestring | null
- planned_attimestamp | null
- gps_latnumber | null
- gps_lngnumber | null
- departed_attimestamp | null
Departure side of the leg — null until the driver taps Depart.
- departed_gps_latnumber | null
- departed_gps_lngnumber | null
- place_namestring | null
Human-readable places, resolved on-device at capture time. The UI shows these instead of coordinates.
- departed_place_namestring | null
- transporter_idstring | null
- transporter_namestring | null
- estimated_arrival_attimestamp | null
Projection from the driver's own observed speed across completed legs. Null until at least one leg has been completed — before that there is no measured speed and any figure would be invented.
- is_delayedboolean
Server-computed so two clients can't disagree; the device clock belongs to the driver and is not trustworthy for this.
Defaults to
false - delay_minutesinteger | null
Signed minutes late (positive) or early (negative) vs planned_at.
- alertobject | null
+Show 5 child attributesHide child attributes
- titlestringRequired
- detailstringRequired
- severitystringOne of
criticalwarninginfoDefaults to
warning - acknowledgedboolean
Defaults to
false - route_deviation_kmnumber | null
- dispatched_attimestamp | null
- picked_up_attimestamp | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- pod_photo_urlstring | null
- created_attimestampRequired
When the object was created (ISO 8601, UTC).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- last_updated_labelstring | null
- repair_request_idinteger | null
Set on a repair leg (consumer <-> repair shop); the transporter may decline it before pickup.
- repair_legstring | null
- logistics_planobject | null
+Show 2 child attributesHide child attributes
- boxesarray of objects
+Show 6 child attributesHide child attributes
- idstringRequired
- modestringRequiredOne of
samemixed - capacityintegerRequired
- regionstring | null
- linesarray of objectsRequired
Line items, one per variant.
+Show 5 child attributesHide child attributes
- colorstringRequired
Colour name, exactly as on the product's variants.
- sizestringRequired
Size name, exactly as on the product's variants.
- batch_skustring | null
SKU printed on the label for this variant in this batch.
- quantityintegerRequired
Number of units.
- volume_lstring | null
Packaged volume of one unit, in litres. Used to size boxes.
- created_atstring | null
When the object was created (ISO 8601, UTC).
- destinationsarray of objects
+Show 8 child attributesHide child attributes
- idstringRequired
- namestringRequired
- citystring | null
- countrystringRequired
- arrival_datestring | null
- prioritystringOne of
lowstandardurgentDefaults to
standard - box_idsarray of strings
Ids of the boxes this call acts on.
- instructionsstring
Defaults to
- custody_tx_queuedinteger | null
Number of custody-transfer chain transactions successfully queued for this status change (factory->transporter on take-custody, transporter->retail on delivery). Null when the action taken didn't trigger a custody transfer (e.g. plain detail fetch).
curl -X PUT http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a \
-H "Authorization: Bearer $SKANNIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"destination_hub_name": "Northwind Amsterdam",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321"
}'{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"transport_mode": "local",
"estimated_delivery": "2026-11-20",
"eta_label": "Arrives Sat 11 Oct",
"is_delayed": false,
"journey_progress_percent": 72,
"journey_progress_label": "",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"origin_station_name": "Rotterdam DC",
"origin_station_detail": "Waalhaven 12, Rotterdam",
"destination_hub_name": "Northwind Amsterdam",
"destination_hub_detail": "Kalverstraat 1, Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"retail_name": "Northwind Amsterdam",
"dispatch_notes": "Deliver before 10:00",
"carrier_type": "skannit_rider",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"carrier_name": "Carrier",
"carrier_tracking_url": "https://files.skannit.example/carrier_tracking.png",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"items": [
{
"product_name": "Trail Tee",
"quantity": 1
}
],
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal",
"last_location": "A15 near Rotterdam",
"last_location_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"event_type": "picked_up",
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"occurred_at": null,
"is_current": false,
"status": "pending",
"sequence_position": 1,
"mode": "road",
"location_name": "Rotterdam DC",
"planned_at": null,
"gps_lat": 51.9244,
"gps_lng": 4.4777,
"departed_at": null,
"departed_gps_lat": 51.9244,
"departed_gps_lng": 4.4777,
"place_name": "Rotterdam",
"departed_place_name": "Departed place",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"estimated_arrival_at": null,
"is_delayed": false,
"delay_minutes": 1
}
],
"alert": {
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"severity": "critical",
"acknowledged": false,
"route_deviation_km": 1
},
"dispatched_at": null,
"picked_up_at": null,
"delivered_at": null,
"pod_photo_url": "https://files.skannit.example/pod_photo.png",
"created_at": "2026-10-09T09:30:00Z",
"updated_at": "2026-10-09T09:30:00Z",
"last_updated_label": "2 minutes ago",
"repair_request_id": 1,
"repair_leg": "repair leg",
"logistics_plan": {
"boxes": [
{
"id": "SKN-CRT-00402-9A1C3E7F",
"mode": "same",
"capacity": 1,
"region": "EU",
"lines": [
{
"color": "White",
"size": "M",
"batch_sku": "TT-100-WHT-M",
"quantity": 1,
"volume_l": 0.5
}
],
"created_at": "2026-10-09T09:30:00Z"
}
],
"destinations": [
"in_store"
]
},
"custody_tx_queued": 1
}Release a dispatch#
Requires scope warehouse_transport:write
Proceed to dispatch — warehouse release (dispatched_at), logs milestone. Cargo stays assigned until the transporter takes custody.
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Returns
HTTP 200- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transport_modestringOne of
localinternationalDefaults to
local - estimated_deliverydate | null
- eta_labelstring | null
- is_delayedboolean
Defaults to
false - journey_progress_percentinteger
Defaults to
0 - journey_progress_labelstring
Defaults to
- conversation_idstring | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- origin_gps_latnumber | null
Fixed endpoints, so the journey map can plot where the shipment runs between rather than only the legs the driver pinned.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- retail_idstring | null
The shop (retail account) id.
- retail_namestring | null
- dispatch_notesstring | null
- carrier_typestringRequiredOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- carrier_namestring | null
- carrier_tracking_urlstring | null
- transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- itemsarray of objects
The objects on this page.
+Show 2 child attributesHide child attributes
- product_namestringRequired
- quantityintegerRequired
Number of units.
- boxesarray of objects
+Show 7 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countintegerRequired
- unit_tokensarray of strings
Tokens of the items involved.
- statusstringRequired
Current state of the object. See the allowed values.
One ofnormalflaggeddelayedin_transitdelivered - last_locationstring | null
- last_location_attimestamp | null
- milestonesarray of objects
+Show 23 child attributesHide child attributes
- milestone_idstringRequired
- event_typestringRequired
- titlestringRequired
- detailstring | null
- occurred_attimestamp | null
Null until the leg is reached — arrival time.
- is_currentboolean
Defaults to
false - statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - location_namestring | null
- planned_attimestamp | null
- gps_latnumber | null
- gps_lngnumber | null
- departed_attimestamp | null
Departure side of the leg — null until the driver taps Depart.
- departed_gps_latnumber | null
- departed_gps_lngnumber | null
- place_namestring | null
Human-readable places, resolved on-device at capture time. The UI shows these instead of coordinates.
- departed_place_namestring | null
- transporter_idstring | null
- transporter_namestring | null
- estimated_arrival_attimestamp | null
Projection from the driver's own observed speed across completed legs. Null until at least one leg has been completed — before that there is no measured speed and any figure would be invented.
- is_delayedboolean
Server-computed so two clients can't disagree; the device clock belongs to the driver and is not trustworthy for this.
Defaults to
false - delay_minutesinteger | null
Signed minutes late (positive) or early (negative) vs planned_at.
- alertobject | null
+Show 5 child attributesHide child attributes
- titlestringRequired
- detailstringRequired
- severitystringOne of
criticalwarninginfoDefaults to
warning - acknowledgedboolean
Defaults to
false - route_deviation_kmnumber | null
- dispatched_attimestamp | null
- picked_up_attimestamp | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- pod_photo_urlstring | null
- created_attimestampRequired
When the object was created (ISO 8601, UTC).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- last_updated_labelstring | null
- repair_request_idinteger | null
Set on a repair leg (consumer <-> repair shop); the transporter may decline it before pickup.
- repair_legstring | null
- logistics_planobject | null
+Show 2 child attributesHide child attributes
- boxesarray of objects
+Show 6 child attributesHide child attributes
- idstringRequired
- modestringRequiredOne of
samemixed - capacityintegerRequired
- regionstring | null
- linesarray of objectsRequired
Line items, one per variant.
+Show 5 child attributesHide child attributes
- colorstringRequired
Colour name, exactly as on the product's variants.
- sizestringRequired
Size name, exactly as on the product's variants.
- batch_skustring | null
SKU printed on the label for this variant in this batch.
- quantityintegerRequired
Number of units.
- volume_lstring | null
Packaged volume of one unit, in litres. Used to size boxes.
- created_atstring | null
When the object was created (ISO 8601, UTC).
- destinationsarray of objects
+Show 8 child attributesHide child attributes
- idstringRequired
- namestringRequired
- citystring | null
- countrystringRequired
- arrival_datestring | null
- prioritystringOne of
lowstandardurgentDefaults to
standard - box_idsarray of strings
Ids of the boxes this call acts on.
- instructionsstring
Defaults to
- custody_tx_queuedinteger | null
Number of custody-transfer chain transactions successfully queued for this status change (factory->transporter on take-custody, transporter->retail on delivery). Null when the action taken didn't trigger a custody transfer (e.g. plain detail fetch).
curl -X POST http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a/proceed \
-H "Authorization: Bearer $SKANNIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"transport_mode": "local",
"estimated_delivery": "2026-11-20",
"eta_label": "Arrives Sat 11 Oct",
"is_delayed": false,
"journey_progress_percent": 72,
"journey_progress_label": "",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"origin_station_name": "Rotterdam DC",
"origin_station_detail": "Waalhaven 12, Rotterdam",
"destination_hub_name": "Northwind Amsterdam",
"destination_hub_detail": "Kalverstraat 1, Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"retail_name": "Northwind Amsterdam",
"dispatch_notes": "Deliver before 10:00",
"carrier_type": "skannit_rider",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"carrier_name": "Carrier",
"carrier_tracking_url": "https://files.skannit.example/carrier_tracking.png",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"items": [
{
"product_name": "Trail Tee",
"quantity": 1
}
],
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal",
"last_location": "A15 near Rotterdam",
"last_location_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"event_type": "picked_up",
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"occurred_at": null,
"is_current": false,
"status": "pending",
"sequence_position": 1,
"mode": "road",
"location_name": "Rotterdam DC",
"planned_at": null,
"gps_lat": 51.9244,
"gps_lng": 4.4777,
"departed_at": null,
"departed_gps_lat": 51.9244,
"departed_gps_lng": 4.4777,
"place_name": "Rotterdam",
"departed_place_name": "Departed place",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"estimated_arrival_at": null,
"is_delayed": false,
"delay_minutes": 1
}
],
"alert": {
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"severity": "critical",
"acknowledged": false,
"route_deviation_km": 1
},
"dispatched_at": null,
"picked_up_at": null,
"delivered_at": null,
"pod_photo_url": "https://files.skannit.example/pod_photo.png",
"created_at": "2026-10-09T09:30:00Z",
"updated_at": "2026-10-09T09:30:00Z",
"last_updated_label": "2 minutes ago",
"repair_request_id": 1,
"repair_leg": "repair leg",
"logistics_plan": {
"boxes": [
{
"id": "SKN-CRT-00402-9A1C3E7F",
"mode": "same",
"capacity": 1,
"region": "EU",
"lines": [
{
"color": "White",
"size": "M",
"batch_sku": "TT-100-WHT-M",
"quantity": 1,
"volume_l": 0.5
}
],
"created_at": "2026-10-09T09:30:00Z"
}
],
"destinations": [
"in_store"
]
},
"custody_tx_queued": 1
}Report a dispatch issue#
Requires scope warehouse_transport:write
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Request body
- titlestringRequired
- detailstringRequired
Returns
HTTP 200- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transport_modestringOne of
localinternationalDefaults to
local - estimated_deliverydate | null
- eta_labelstring | null
- is_delayedboolean
Defaults to
false - journey_progress_percentinteger
Defaults to
0 - journey_progress_labelstring
Defaults to
- conversation_idstring | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- origin_gps_latnumber | null
Fixed endpoints, so the journey map can plot where the shipment runs between rather than only the legs the driver pinned.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- retail_idstring | null
The shop (retail account) id.
- retail_namestring | null
- dispatch_notesstring | null
- carrier_typestringRequiredOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- carrier_namestring | null
- carrier_tracking_urlstring | null
- transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- itemsarray of objects
The objects on this page.
+Show 2 child attributesHide child attributes
- product_namestringRequired
- quantityintegerRequired
Number of units.
- boxesarray of objects
+Show 7 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countintegerRequired
- unit_tokensarray of strings
Tokens of the items involved.
- statusstringRequired
Current state of the object. See the allowed values.
One ofnormalflaggeddelayedin_transitdelivered - last_locationstring | null
- last_location_attimestamp | null
- milestonesarray of objects
+Show 23 child attributesHide child attributes
- milestone_idstringRequired
- event_typestringRequired
- titlestringRequired
- detailstring | null
- occurred_attimestamp | null
Null until the leg is reached — arrival time.
- is_currentboolean
Defaults to
false - statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - location_namestring | null
- planned_attimestamp | null
- gps_latnumber | null
- gps_lngnumber | null
- departed_attimestamp | null
Departure side of the leg — null until the driver taps Depart.
- departed_gps_latnumber | null
- departed_gps_lngnumber | null
- place_namestring | null
Human-readable places, resolved on-device at capture time. The UI shows these instead of coordinates.
- departed_place_namestring | null
- transporter_idstring | null
- transporter_namestring | null
- estimated_arrival_attimestamp | null
Projection from the driver's own observed speed across completed legs. Null until at least one leg has been completed — before that there is no measured speed and any figure would be invented.
- is_delayedboolean
Server-computed so two clients can't disagree; the device clock belongs to the driver and is not trustworthy for this.
Defaults to
false - delay_minutesinteger | null
Signed minutes late (positive) or early (negative) vs planned_at.
- alertobject | null
+Show 5 child attributesHide child attributes
- titlestringRequired
- detailstringRequired
- severitystringOne of
criticalwarninginfoDefaults to
warning - acknowledgedboolean
Defaults to
false - route_deviation_kmnumber | null
- dispatched_attimestamp | null
- picked_up_attimestamp | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- pod_photo_urlstring | null
- created_attimestampRequired
When the object was created (ISO 8601, UTC).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- last_updated_labelstring | null
- repair_request_idinteger | null
Set on a repair leg (consumer <-> repair shop); the transporter may decline it before pickup.
- repair_legstring | null
- logistics_planobject | null
+Show 2 child attributesHide child attributes
- boxesarray of objects
+Show 6 child attributesHide child attributes
- idstringRequired
- modestringRequiredOne of
samemixed - capacityintegerRequired
- regionstring | null
- linesarray of objectsRequired
Line items, one per variant.
+Show 5 child attributesHide child attributes
- colorstringRequired
Colour name, exactly as on the product's variants.
- sizestringRequired
Size name, exactly as on the product's variants.
- batch_skustring | null
SKU printed on the label for this variant in this batch.
- quantityintegerRequired
Number of units.
- volume_lstring | null
Packaged volume of one unit, in litres. Used to size boxes.
- created_atstring | null
When the object was created (ISO 8601, UTC).
- destinationsarray of objects
+Show 8 child attributesHide child attributes
- idstringRequired
- namestringRequired
- citystring | null
- countrystringRequired
- arrival_datestring | null
- prioritystringOne of
lowstandardurgentDefaults to
standard - box_idsarray of strings
Ids of the boxes this call acts on.
- instructionsstring
Defaults to
- custody_tx_queuedinteger | null
Number of custody-transfer chain transactions successfully queued for this status change (factory->transporter on take-custody, transporter->retail on delivery). Null when the action taken didn't trigger a custody transfer (e.g. plain detail fetch).
curl -X POST http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a/report-issue \
-H "Authorization: Bearer $SKANNIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units"
}'{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"transport_mode": "local",
"estimated_delivery": "2026-11-20",
"eta_label": "Arrives Sat 11 Oct",
"is_delayed": false,
"journey_progress_percent": 72,
"journey_progress_label": "",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"origin_station_name": "Rotterdam DC",
"origin_station_detail": "Waalhaven 12, Rotterdam",
"destination_hub_name": "Northwind Amsterdam",
"destination_hub_detail": "Kalverstraat 1, Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"retail_name": "Northwind Amsterdam",
"dispatch_notes": "Deliver before 10:00",
"carrier_type": "skannit_rider",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"carrier_name": "Carrier",
"carrier_tracking_url": "https://files.skannit.example/carrier_tracking.png",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"items": [
{
"product_name": "Trail Tee",
"quantity": 1
}
],
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal",
"last_location": "A15 near Rotterdam",
"last_location_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"event_type": "picked_up",
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"occurred_at": null,
"is_current": false,
"status": "pending",
"sequence_position": 1,
"mode": "road",
"location_name": "Rotterdam DC",
"planned_at": null,
"gps_lat": 51.9244,
"gps_lng": 4.4777,
"departed_at": null,
"departed_gps_lat": 51.9244,
"departed_gps_lng": 4.4777,
"place_name": "Rotterdam",
"departed_place_name": "Departed place",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"estimated_arrival_at": null,
"is_delayed": false,
"delay_minutes": 1
}
],
"alert": {
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"severity": "critical",
"acknowledged": false,
"route_deviation_km": 1
},
"dispatched_at": null,
"picked_up_at": null,
"delivered_at": null,
"pod_photo_url": "https://files.skannit.example/pod_photo.png",
"created_at": "2026-10-09T09:30:00Z",
"updated_at": "2026-10-09T09:30:00Z",
"last_updated_label": "2 minutes ago",
"repair_request_id": 1,
"repair_leg": "repair leg",
"logistics_plan": {
"boxes": [
{
"id": "SKN-CRT-00402-9A1C3E7F",
"mode": "same",
"capacity": 1,
"region": "EU",
"lines": [
{
"color": "White",
"size": "M",
"batch_sku": "TT-100-WHT-M",
"quantity": 1,
"volume_l": 0.5
}
],
"created_at": "2026-10-09T09:30:00Z"
}
],
"destinations": [
"in_store"
]
},
"custody_tx_queued": 1
}Get a dispatch manifest#
Requires scope warehouse_transport:read
JSON manifest for PDF generation or NFC handoff.
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Returns
HTTP 200- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- product_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- origin_station_namestring | null
- destination_hub_namestring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- boxesarray of objects
+Show 5 child attributesHide child attributes
- box_idstring | null
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countinteger
Defaults to
0 - unit_tokensarray of strings
Tokens of the items involved.
- statusstring
Current state of the object. See the allowed values.
Defaults to
normal
- generated_attimestampRequired
curl http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a/manifest \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"product_name": "Trail Tee",
"status": "draft",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"origin_station_name": "Rotterdam DC",
"destination_hub_name": "Northwind Amsterdam",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal"
}
],
"generated_at": "2026-10-09T09:30:00Z"
}Track a dispatch live#
Requires scope warehouse_transport:read
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Returns
HTTP 200- dispatch_idstringRequired
The shipment to a shop.
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - current_locationstring | null
- origin_station_namestring | null
- destination_hub_namestring | null
- origin_gps_latnumber | null
Fixed route endpoints, forwarded from the dispatch. Without these a client can only draw the driver's recorded fixes, so a journey with no GPS yet has nothing at all to plot — and even a partial trail gives no sense of where it is headed. Both are Optional: a dispatch created before these columns were populated legitimately has none, and the client must pin only what it actually has rather than guessing a coordinate.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- route_progress_percentinteger
Defaults to
0 - vehicle_platestring | null
- driver_namestring | null
- last_updated_attimestamp | null
- last_updated_labelstring | null
- pointsarray of objects
+Show 4 child attributesHide child attributes
- labelstringRequired
- latitudenumberRequired
- longitudenumberRequired
- recorded_attimestamp | null
- legsarray of objects
Reached milestone waypoints with coordinates, in travel order — separate from points (raw GPS breadcrumbs) since a milestone-flow dispatch may have no checkpoints logged at all yet still have real leg coordinates.
+Show 6 child attributesHide child attributes
- milestone_idstringRequired
- labelstringRequired
- latitudenumberRequired
- longitudenumberRequired
- sequence_positioninteger | null
- reached_attimestamp | null
- milestonesarray of objects
Full journey timeline (pending/in_transit/reached), sequence-ordered — for step-by-step display, distinct from legs (map pins, reached-only).
+Show 13 child attributesHide child attributes
- milestone_idstringRequired
- titlestringRequired
- statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - place_namestring | null
- location_namestring | null
- latitudenumber | null
Arrival fix. None when the leg has no coordinates on file (planned before the map picker existed) or hasn't been reached yet.
- longitudenumber | null
- occurred_attimestamp | null
- departed_attimestamp | null
- estimated_arrival_attimestamp | null
- is_delayedboolean
Defaults to
false
- boxes_in_transitinteger
Defaults to
0 - boxes_flaggedinteger
Defaults to
0 - boxes_normalinteger
Defaults to
0
curl http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a/live-track \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"status": "draft",
"current_location": "A15 near Rotterdam",
"origin_station_name": "Rotterdam DC",
"destination_hub_name": "Northwind Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"route_progress_percent": 72,
"vehicle_plate": "VX-123-B",
"driver_name": "Jan de Vries",
"last_updated_at": null,
"last_updated_label": "2 minutes ago",
"points": [
{
"label": "Packed",
"latitude": 51.9244,
"longitude": 4.4777,
"recorded_at": null
}
],
"legs": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"label": "Packed",
"latitude": 51.9244,
"longitude": 4.4777,
"sequence_position": 1,
"reached_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"title": "Delayed at depot",
"status": "pending",
"sequence_position": 1,
"mode": "road",
"place_name": "Rotterdam",
"location_name": "Rotterdam DC",
"latitude": 51.9244,
"longitude": 4.4777,
"occurred_at": null,
"departed_at": null,
"estimated_arrival_at": null,
"is_delayed": false
}
],
"boxes_in_transit": 24,
"boxes_flagged": 24,
"boxes_normal": 24
}Get dispatch workspace#
Requires scope warehouse_transport:read
Full Transport messaging page — dispatch, transporter, chat, live track.
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Returns
HTTP 200- dispatchobjectRequired
+Show 51 child attributesHide child attributes
- dispatch_idstringRequired
The shipment to a shop.
- order_idstringRequired
Skannit's id for the production order. Use it in every /production-orders/{order_id} and QR call.
- order_display_idstringRequired
Order number formatted for display (#PO-YYYY-XXXX).
- brand_namestring | null
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - transport_modestringOne of
localinternationalDefaults to
local - estimated_deliverydate | null
- eta_labelstring | null
- is_delayedboolean
Defaults to
false - journey_progress_percentinteger
Defaults to
0 - journey_progress_labelstring
Defaults to
- conversation_idstring | null
- origin_station_namestring | null
- origin_station_detailstring | null
- destination_hub_namestring | null
- destination_hub_detailstring | null
- origin_gps_latnumber | null
Fixed endpoints, so the journey map can plot where the shipment runs between rather than only the legs the driver pinned.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- retail_idstring | null
The shop (retail account) id.
- retail_namestring | null
- dispatch_notesstring | null
- carrier_typestringRequiredOne of
skannit_riderexternal_carrierbrand_fleet - carrier_providerstring | nullOne of
dhlglspostnlother - carrier_tracking_numberstring | null
- carrier_namestring | null
- carrier_tracking_urlstring | null
- transporter_idstring | null
- transporter_namestring | null
- driver_namestring | null
- vehicle_platestring | null
- driver_contactstring | null
- total_boxesinteger
Defaults to
0 - total_quantityinteger
Defaults to
0 - total_weight_kgstring | null
- itemsarray of objects
The objects on this page.
+Show 2 child attributesHide child attributes
- product_namestringRequired
- quantityintegerRequired
Number of units.
- boxesarray of objects
+Show 7 child attributesHide child attributes
- box_idstringRequired
Id printed on the box label. Scanning the box resolves to this id.
- box_labelstringRequired
- unit_countintegerRequired
- unit_tokensarray of strings
Tokens of the items involved.
- statusstringRequired
Current state of the object. See the allowed values.
One ofnormalflaggeddelayedin_transitdelivered - last_locationstring | null
- last_location_attimestamp | null
- milestonesarray of objects
+Show 23 child attributesHide child attributes
- milestone_idstringRequired
- event_typestringRequired
- titlestringRequired
- detailstring | null
- occurred_attimestamp | null
Null until the leg is reached — arrival time.
- is_currentboolean
Defaults to
false - statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - location_namestring | null
- planned_attimestamp | null
- gps_latnumber | null
- gps_lngnumber | null
- departed_attimestamp | null
Departure side of the leg — null until the driver taps Depart.
- departed_gps_latnumber | null
- departed_gps_lngnumber | null
- place_namestring | null
Human-readable places, resolved on-device at capture time. The UI shows these instead of coordinates.
- departed_place_namestring | null
- transporter_idstring | null
- transporter_namestring | null
- estimated_arrival_attimestamp | null
Projection from the driver's own observed speed across completed legs. Null until at least one leg has been completed — before that there is no measured speed and any figure would be invented.
- is_delayedboolean
Server-computed so two clients can't disagree; the device clock belongs to the driver and is not trustworthy for this.
Defaults to
false - delay_minutesinteger | null
Signed minutes late (positive) or early (negative) vs planned_at.
- alertobject | null
+Show 5 child attributesHide child attributes
- titlestringRequired
- detailstringRequired
- severitystringOne of
criticalwarninginfoDefaults to
warning - acknowledgedboolean
Defaults to
false - route_deviation_kmnumber | null
- dispatched_attimestamp | null
- picked_up_attimestamp | null
- delivered_attimestamp | null
When the parcel was reported delivered — the moment ownership moved.
- pod_photo_urlstring | null
- created_attimestampRequired
When the object was created (ISO 8601, UTC).
- updated_attimestampRequired
When the object last changed (ISO 8601, UTC).
- last_updated_labelstring | null
- repair_request_idinteger | null
Set on a repair leg (consumer <-> repair shop); the transporter may decline it before pickup.
- repair_legstring | null
- logistics_planobject | null
+Show 2 child attributesHide child attributes
- boxesarray of objects
+Show 6 child attributesHide child attributes
- idstringRequired
- modestringRequiredOne of
samemixed - capacityintegerRequired
- regionstring | null
- linesarray of objectsRequired
Line items, one per variant.
+Show 5 child attributesHide child attributes
- colorstringRequired
Colour name, exactly as on the product's variants.
- sizestringRequired
Size name, exactly as on the product's variants.
- batch_skustring | null
SKU printed on the label for this variant in this batch.
- quantityintegerRequired
Number of units.
- volume_lstring | null
Packaged volume of one unit, in litres. Used to size boxes.
- created_atstring | null
When the object was created (ISO 8601, UTC).
- destinationsarray of objects
+Show 8 child attributesHide child attributes
- idstringRequired
- namestringRequired
- citystring | null
- countrystringRequired
- arrival_datestring | null
- prioritystringOne of
lowstandardurgentDefaults to
standard - box_idsarray of strings
Ids of the boxes this call acts on.
- instructionsstring
Defaults to
- custody_tx_queuedinteger | null
Number of custody-transfer chain transactions successfully queued for this status change (factory->transporter on take-custody, transporter->retail on delivery). Null when the action taken didn't trigger a custody transfer (e.g. plain detail fetch).
- transporterobject | null
+Show 12 child attributesHide child attributes
- transporter_idstringRequired
- namestringRequired
- company_namestring | null
- role_titlestring
Defaults to
Lead Driver - service_regionstring | null
- vehicle_platestring | null
- default_contactstring | null
- ratingnumber
Defaults to
0 - delivery_countinteger
Defaults to
0 - is_verifiedboolean
Defaults to
false - status_labelstring
Defaults to
OFFLINE - avatar_urlstring | null
- conversation_idstring | null
- live_trackobjectRequired
+Show 20 child attributesHide child attributes
- dispatch_idstringRequired
The shipment to a shop.
- statusstringRequired
Current state of the object. See the allowed values.
One ofdraftassignedin_transitdeliveredcancelled - current_locationstring | null
- origin_station_namestring | null
- destination_hub_namestring | null
- origin_gps_latnumber | null
Fixed route endpoints, forwarded from the dispatch. Without these a client can only draw the driver's recorded fixes, so a journey with no GPS yet has nothing at all to plot — and even a partial trail gives no sense of where it is headed. Both are Optional: a dispatch created before these columns were populated legitimately has none, and the client must pin only what it actually has rather than guessing a coordinate.
- origin_gps_lngnumber | null
- destination_gps_latnumber | null
- destination_gps_lngnumber | null
- route_progress_percentinteger
Defaults to
0 - vehicle_platestring | null
- driver_namestring | null
- last_updated_attimestamp | null
- last_updated_labelstring | null
- pointsarray of objects
+Show 4 child attributesHide child attributes
- labelstringRequired
- latitudenumberRequired
- longitudenumberRequired
- recorded_attimestamp | null
- legsarray of objects
Reached milestone waypoints with coordinates, in travel order — separate from points (raw GPS breadcrumbs) since a milestone-flow dispatch may have no checkpoints logged at all yet still have real leg coordinates.
+Show 6 child attributesHide child attributes
- milestone_idstringRequired
- labelstringRequired
- latitudenumberRequired
- longitudenumberRequired
- sequence_positioninteger | null
- reached_attimestamp | null
- milestonesarray of objects
Full journey timeline (pending/in_transit/reached), sequence-ordered — for step-by-step display, distinct from legs (map pins, reached-only).
+Show 13 child attributesHide child attributes
- milestone_idstringRequired
- titlestringRequired
- statusstring
Current state of the object. See the allowed values.
One ofpendingplannedin_transitreachedskippedDefaults to
reached - sequence_positioninteger | null
- modestring | nullOne of
roadseaairrailother - place_namestring | null
- location_namestring | null
- latitudenumber | null
Arrival fix. None when the leg has no coordinates on file (planned before the map picker existed) or hasn't been reached yet.
- longitudenumber | null
- occurred_attimestamp | null
- departed_attimestamp | null
- estimated_arrival_attimestamp | null
- is_delayedboolean
Defaults to
false
- boxes_in_transitinteger
Defaults to
0 - boxes_flaggedinteger
Defaults to
0 - boxes_normalinteger
Defaults to
0
curl http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a/workspace \
-H "Authorization: Bearer $SKANNIT_TOKEN"{
"dispatch": {
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"order_id": "ord_8c2f4e1a9b7d3c60",
"order_display_id": "#PO-2026-7F3A",
"brand_name": "Northwind Apparel",
"status": "draft",
"transport_mode": "local",
"estimated_delivery": "2026-11-20",
"eta_label": "Arrives Sat 11 Oct",
"is_delayed": false,
"journey_progress_percent": 72,
"journey_progress_label": "",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"origin_station_name": "Rotterdam DC",
"origin_station_detail": "Waalhaven 12, Rotterdam",
"destination_hub_name": "Northwind Amsterdam",
"destination_hub_detail": "Kalverstraat 1, Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"retail_id": "4974bf7c-8314-5bb9-9f74-8c1497523eb5",
"retail_name": "Northwind Amsterdam",
"dispatch_notes": "Deliver before 10:00",
"carrier_type": "skannit_rider",
"carrier_provider": "PostNL",
"carrier_tracking_number": "3SNWD1234567890",
"carrier_name": "Carrier",
"carrier_tracking_url": "https://files.skannit.example/carrier_tracking.png",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"driver_name": "Jan de Vries",
"vehicle_plate": "VX-123-B",
"driver_contact": "+31687654321",
"total_boxes": 24,
"total_quantity": 24,
"total_weight_kg": 11.6,
"items": [
{
"product_name": "Trail Tee",
"quantity": 1
}
],
"boxes": [
{
"box_id": "BOX-F4E1A9-0003",
"box_label": "Box",
"unit_count": 24,
"unit_tokens": [
"Qm7xK2pL9vR4tY8wZ1nB3c"
],
"status": "normal",
"last_location": "A15 near Rotterdam",
"last_location_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"event_type": "picked_up",
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"occurred_at": null,
"is_current": false,
"status": "pending",
"sequence_position": 1,
"mode": "road",
"location_name": "Rotterdam DC",
"planned_at": null,
"gps_lat": 51.9244,
"gps_lng": 4.4777,
"departed_at": null,
"departed_gps_lat": 51.9244,
"departed_gps_lng": 4.4777,
"place_name": "Rotterdam",
"departed_place_name": "Departed place",
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"transporter_name": "FastFreight BV",
"estimated_arrival_at": null,
"is_delayed": false,
"delay_minutes": 1
}
],
"alert": {
"title": "Delayed at depot",
"detail": "Box BOX-F4E1A9-0003 manifest says 48 units",
"severity": "critical",
"acknowledged": false,
"route_deviation_km": 1
},
"dispatched_at": null,
"picked_up_at": null,
"delivered_at": null,
"pod_photo_url": "https://files.skannit.example/pod_photo.png",
"created_at": "2026-10-09T09:30:00Z",
"updated_at": "2026-10-09T09:30:00Z",
"last_updated_label": "2 minutes ago",
"repair_request_id": 1,
"repair_leg": "repair leg",
"logistics_plan": {
"boxes": [
{
"id": "SKN-CRT-00402-9A1C3E7F",
"mode": "same",
"capacity": 1,
"region": "EU",
"lines": [
{
"color": null,
"size": null,
"batch_sku": null,
"quantity": null,
"volume_l": null
}
],
"created_at": "2026-10-09T09:30:00Z"
}
],
"destinations": [
"in_store"
]
},
"custody_tx_queued": 1
},
"transporter": {
"transporter_id": "f74f2d3e-d02f-58f6-b03b-795142c1e5d9",
"name": "Northwind Apparel",
"company_name": "FastFreight BV",
"role_title": "Lead Driver",
"service_region": "Benelux",
"vehicle_plate": "VX-123-B",
"default_contact": "+31687654321",
"rating": 4.8,
"delivery_count": 24,
"is_verified": true,
"status_label": "OFFLINE",
"avatar_url": "https://files.skannit.example/avatar.png"
},
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314",
"live_track": {
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"status": "draft",
"current_location": "A15 near Rotterdam",
"origin_station_name": "Rotterdam DC",
"destination_hub_name": "Northwind Amsterdam",
"origin_gps_lat": 51.9244,
"origin_gps_lng": 4.4777,
"destination_gps_lat": 51.9244,
"destination_gps_lng": 4.4777,
"route_progress_percent": 72,
"vehicle_plate": "VX-123-B",
"driver_name": "Jan de Vries",
"last_updated_at": null,
"last_updated_label": "2 minutes ago",
"points": [
{
"label": "Packed",
"latitude": 51.9244,
"longitude": 4.4777,
"recorded_at": null
}
],
"legs": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"label": "Packed",
"latitude": 51.9244,
"longitude": 4.4777,
"sequence_position": 1,
"reached_at": null
}
],
"milestones": [
{
"milestone_id": "9e787ca7-0de0-5952-bc10-0063d6ab12de",
"title": "Delayed at depot",
"status": "pending",
"sequence_position": 1,
"mode": "road",
"place_name": "Rotterdam",
"location_name": "Rotterdam DC",
"latitude": 51.9244,
"longitude": 4.4777,
"occurred_at": null,
"departed_at": null,
"estimated_arrival_at": null,
"is_delayed": false
}
],
"boxes_in_transit": 24,
"boxes_flagged": 24,
"boxes_normal": 24
}
}Open the carrier chat#
Requires scope warehouse_transport:write
Open or resume direct chat with the assigned transporter.
Parameters
- dispatch_idstringpathRequired
The shipment to a shop.
Returns
HTTP 201- dispatch_idstringRequired
The shipment to a shop.
- conversation_idstringRequired
curl -X POST http://62.169.23.239:8001/api/v1/warehouse/transport/dispatches/b42d4ac7-4d7d-544e-99d3-941dad44d03a/conversation \
-H "Authorization: Bearer $SKANNIT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"{
"dispatch_id": "b42d4ac7-4d7d-544e-99d3-941dad44d03a",
"conversation_id": "14b1be4a-c85b-528b-bb05-270ec6fea314"
}