Developers
Tracking API
Every parcel we handle is exported from India, and the destination carrier cannot report anything until it takes possession in-country. Across 501 measured parcels that left the buyer's tracking number showing nothing for a median of 6.3 days after dispatch — 80% stayed silent past day five.
This API is that missing window: pickup, hub, export, flight and customs, in a form another system can read.
No authentication. No API key, no OAuth. Cross-origin requests are allowed from any host.
No personal data. Shipment facts only — never a buyer name, address, email, or the contents or value of an order.
Rate limit. 120 requests per minute per IP. Responses may be cached for 60 seconds.
Track one shipment
GET https://www.paamship.com/api/v1/track/PM32608216793759The reference is a Paamship reference (PM…) or the destination carrier's tracking number. Order numbers are not accepted — this is a shipment API.
{
"reference": "PM32608216793759",
"status": "delivered",
"status_message": "Shipment Delivered",
"origin_country": "IN",
"destination_country": "US",
"shipped_at": "2026-08-21T09:46:18.000Z",
"delivered_at": "2026-08-30T17:42:54.000Z",
"last_mile": {
"carrier": "UNI UNI",
"tracking_number": "UUS68M4980235458380",
"tracking_url": "https://www.uniuni.com/tracking/?no=UUS68M4980235458380"
},
"checkpoints": [
{
"time": "2026-08-30T17:42:54.000Z",
"status": "delivered",
"stage": "destination",
"message": "Shipment Delivered",
"location": "Santa Clara CA"
},
{
"time": "2026-08-22T06:45:00.000Z",
"status": "in_transit",
"stage": "origin",
"message": "Received at Delhi Hub",
"location": "Delhi, India"
}
],
"updated_at": "2026-09-03T00:31:12.000Z"
}Track up to 25
GET https://www.paamship.com/api/v1/track?references=PM32608216793759,PM32609016915804Results come back in the order requested. A reference that isn't found is reported on its own rather than failing the whole call.
Fields
| status | enum | pending, info_received, in_transit, out_for_delivery, delivered, exception |
| checkpoints[].stage | enum | origin, international, destination. The first two are the legs a destination carrier does not report. |
| checkpoints[].time | string | null | UTC instant (ISO-8601). Render in whichever timezone suits the reader. |
| last_mile | object | null | Null until the parcel is handed to the destination carrier — which is exactly the window this API covers. |
| checkpoints | array | Most recent first. |
Errors
{ "error": { "code": "not_found", "message": "No shipment found for that reference." } }400 invalid_reference · 404 not_found · 429 rate_limited
OpenAPI
A machine-readable description is served alongside the routes it documents, so it cannot drift out of date.
GET https://www.paamship.com/api/v1/openapi.jsonPostman
In Postman choose Import → Link and paste the URL below. It is generated from the same source as the routes, so it cannot go stale.
https://www.paamship.com/api/v1/postman.jsonQuestions or integration requests: support@paamship.com