Skip to Content
API ReferenceShipment Tracking

Shipment Tracking

Manage shipment tracking visualization data including map markers and detailed tracking checkpoints. These endpoints support map rendering and checkpoint ingestion for tracking timelines.

Get Map Data

GET/api/v1/shipment-tracking/map

Get shipments with coordinates for map markers.

Requiredshipments:read

Returns shipments that have geo-coordinates, with minimal fields needed for rendering map markers. Results are ordered by creation date (newest first).

Query Parameters

ParameterTypeDescription
limitnumberMaximum results to return (default: 100)
statusstringFilter by shipment status
bridgeIdstringFilter by bridge ID
curl -X GET "https://api.orderly-hub.com/api/v1/shipment-tracking/map?status=in_transit&limit=50" \ -H "Authorization: Bearer oh_..."

Response

{ "data": [ { "id": "uuid", "status": "in_transit", "tracking_number": "794644790132", "carrier": "fedex", "service": "FedEx Ground Home Delivery", "ship_to_lat": 34.0522, "ship_to_lng": -118.2437, "ship_from_lat": 40.7357, "ship_from_lng": -74.1724, "ship_to": { "city": "Los Angeles", "state": "CA" }, "ship_from": { "city": "Newark", "state": "NJ" }, "created_at": "2026-01-15T10:00:00Z", "updated_at": "2026-01-16T14:30:00Z" } ] }

List Checkpoints

GET/api/v1/shipment-tracking/checkpoints

List tracking checkpoints for a shipment.

Requiredshipments:read

Returns a paginated list of tracking checkpoints for a given shipment, ordered by sequence number (ascending).

Query Parameters

ParameterTypeDescription
shipmentIdstringRequired. The shipment UUID
pagenumberPage number (default: 1)
limitnumberItems per page (default: 50)
curl -X GET "https://api.orderly-hub.com/api/v1/shipment-tracking/checkpoints?shipmentId=550e8400-e29b-41d4-a716-446655440000" \ -H "Authorization: Bearer oh_..."

Response

{ "data": [ { "id": "uuid", "organizationId": "uuid", "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 1, "status": "label_created", "statusDetail": "Shipment information sent to carrier", "description": "Shipping label created", "city": "Newark", "state": "NJ", "country": "US", "countryCode": "US", "zip": "07102", "latitude": 40.7357, "longitude": -74.1724, "checkpointTime": "2026-01-15T10:30:00Z", "source": "carrier_webhook", "sourceEventId": "evt_abc123", "isException": false, "exceptionType": null, "createdAt": "2026-01-15T10:31:00Z", "updatedAt": "2026-01-15T10:31:00Z" } ] }

Add Checkpoint

POST/api/v1/shipment-tracking/checkpoints

Add a single tracking checkpoint to a shipment.

Requiredshipments:write

Creates a new tracking checkpoint for a shipment. Duplicate checkpoints (same source + event ID) are rejected with a 409 status.

Request Body

FieldTypeRequiredDescription
shipmentIdstringYesShipment UUID
sequencenumberYesCheckpoint sequence number
statusstringYesStatus code (e.g., in_transit, delivered)
statusDetailstringNoDetailed status description
descriptionstringNoHuman-readable description
citystringNoCity name
statestringNoState or province
countrystringNoCountry name
countryCodestringNoTwo-letter country code
zipstringNoPostal code
latitudenumberNoLatitude coordinate
longitudenumberNoLongitude coordinate
checkpointTimestringYesWhen the event occurred (ISO 8601)
sourcestringYesSource of the checkpoint (e.g., carrier_webhook, manual)
sourceEventIdstringNoUnique event ID from source (used for deduplication)
rawDataobjectNoRaw event data from carrier
isExceptionbooleanNoWhether this is an exception event (default: false)
exceptionTypestringNoException type (e.g., delay, damage)
curl -X POST "https://api.orderly-hub.com/api/v1/shipment-tracking/checkpoints" \ -H "Authorization: Bearer oh_..." \ -H "Content-Type: application/json" \ -d '{ "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 3, "status": "in_transit", "description": "Arrived at FedEx facility", "city": "Indianapolis", "state": "IN", "country": "US", "countryCode": "US", "checkpointTime": "2026-01-16T14:30:00Z", "source": "carrier_webhook", "sourceEventId": "evt_xyz789" }'

Response (201)

{ "data": { "id": "uuid", "organizationId": "uuid", "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 3, "status": "in_transit", "description": "Arrived at FedEx facility", "city": "Indianapolis", "state": "IN", "checkpointTime": "2026-01-16T14:30:00Z", "source": "carrier_webhook", "sourceEventId": "evt_xyz789", "isException": false, "createdAt": "2026-01-16T14:31:00Z", "updatedAt": "2026-01-16T14:31:00Z" } }

Batch Add Checkpoints

POST/api/v1/shipment-tracking/checkpoints/batch

Add multiple tracking checkpoints in a single request (upsert).

Requiredshipments:write

Creates or updates multiple checkpoints across one or more shipments. Uses upsert behavior on the deduplication key (shipment_id + source + source_event_id), so existing checkpoints with the same key are updated rather than duplicated.

Request Body

FieldTypeRequiredDescription
checkpointsobject[]YesArray of checkpoint objects (same fields as single checkpoint)

All shipments referenced in the batch must belong to the authenticated organization. If any shipment ID is invalid, the entire batch is rejected.

curl -X POST "https://api.orderly-hub.com/api/v1/shipment-tracking/checkpoints/batch" \ -H "Authorization: Bearer oh_..." \ -H "Content-Type: application/json" \ -d '{ "checkpoints": [ { "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 4, "status": "out_for_delivery", "description": "On FedEx vehicle for delivery", "city": "Los Angeles", "state": "CA", "checkpointTime": "2026-01-17T08:00:00Z", "source": "carrier_webhook", "sourceEventId": "evt_del001" }, { "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 5, "status": "delivered", "description": "Delivered - Signed for by J. SMITH", "city": "Los Angeles", "state": "CA", "checkpointTime": "2026-01-17T14:22:00Z", "source": "carrier_webhook", "sourceEventId": "evt_del002" } ] }'

Response (201)

{ "data": [ { "id": "uuid", "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 4, "status": "out_for_delivery", "checkpointTime": "2026-01-17T08:00:00Z" }, { "id": "uuid", "shipmentId": "550e8400-e29b-41d4-a716-446655440000", "sequence": 5, "status": "delivered", "checkpointTime": "2026-01-17T14:22:00Z" } ], "count": 2 }

Error Responses

StatusDescription
400One or more shipment IDs not found in the organization
409Duplicate checkpoint (same source + event ID) — single checkpoint endpoint only