Track parcels through a strict state machine (label-created → picked-up → in-transit → out-for-delivery → delivered). Reads are public; every write needs the header X-API-Key: cargo-key-123 — a different auth style than the Bearer tokens used elsewhere.
The Cargo Tracking API is a shipment state machine — created, picked up, in transit, delivered — where illegal transitions are rejected rather than accepted. It is also the only API in the catalog that authenticates writes with an X-API-Key header instead of a Bearer token, which makes it useful for testing a client that must handle more than one auth scheme.
Base URL: https://funapi.dev/api/cargo/v1 · 9 endpoints · OpenAPI 3.1 spec and Postman collection available. New here? Read the getting started guide.
GET https://funapi.dev/api/cargo/v1/shipments — List shipments, filter by status. No token, no signup:
curl -i https://funapi.dev/api/cargo/v1/shipments
answers 200 OK with:
{
"total": 3,
"data": [
{
"id": "TRK123456",
"recipient": "Wile E. Coyote",
"status": "in-transit",
"attempts": 0
},
{
"id": "TRK777777",
"recipient": "Joey Tribbiani",
"status": "delivered",
"attempts": 1
},
{
"id": "TRK000001",
"recipient": "H. Potter",
"status": "label-created",
"attempts": 0
}
]
}
where is my package
GET /cargo/v1/shipments — List shipments, filter by status · Responds with 200 400 Link to this endpointGET /cargo/v1/shipments/{id} — Track one shipment · Responds with 200 404 Link to this endpointGET /cargo/v1/shipments/{id}/events — Tracking history · Responds with 200 404 Link to this endpointGET /cargo/v1/shipments/{id}/eta — Estimated delivery (deterministic-mode friendly) · Responds with 200 404 Link to this endpointGET /cargo/v1/rates — Shipping quote by weight · Responds with 200 400 Link to this endpointwrites, gated by X-API-Key
POST /cargo/v1/shipments — Create a shipping label (X-API-Key) · Responds with 201 400 401 Link to this endpointPOST /cargo/v1/shipments/{id}/advance — Advance the state machine one step (X-API-Key) · Responds with 200 401 404 409 Link to this endpointPOST /cargo/v1/shipments/{id}/attempt-delivery — Attempt delivery — may fail, 3 strikes returns it (X-API-Key) · Responds with 200 401 404 409 Link to this endpointPUT /cargo/v1/shipments/{id}/address — Redirect a parcel (X-API-Key + If-Match) · Responds with 200 400 401 404 409 412 Link to this endpointLast updated