Integrate ShipAnywhere into your own systems. Get rates, create shipments, and track packages programmatically.
All API requests require an API key in the X-API-Key header.
Generate your API key in the app: Profile → Developer API Key → Generate
curl -H "X-API-Key: sa_your_api_key_here" \ https://www.shipanywhere.io/api/v1/shipments
POST /api/v1/rates
Get live FedEx shipping rates for a route.
| Field | Type | Required | Description |
|---|---|---|---|
originCountry | string | Yes | ISO country code (e.g. "SG") |
originZip | string | Yes | Origin postal code |
destCountry | string | Yes | Destination ISO country code |
destZip | string | Yes | Destination postal code |
weight | number | Yes | Weight in kg |
length | number | No | Length in cm (default 30) |
width | number | No | Width in cm (default 25) |
height | number | No | Height in cm (default 20) |
curl -X POST https://www.shipanywhere.io/api/v1/rates \
-H "X-API-Key: sa_your_key" \
-H "Content-Type: application/json" \
-d '{"originCountry":"SG","originZip":"349315","destCountry":"US","destZip":"10001","weight":2}'
{
"ok": true,
"rates": [
{
"service": "FEDEX_INTERNATIONAL_PRIORITY",
"serviceName": "FedEx International Priority",
"transitDays": 2,
"price": 85.40,
"currency": "SGD"
}
]
}
GET /api/v1/track/:trackingNumber
curl https://www.shipanywhere.io/api/v1/track/794644790057 \ -H "X-API-Key: sa_your_key"
GET /api/v1/shipments
Returns your most recent 100 shipments.
curl https://www.shipanywhere.io/api/v1/shipments \ -H "X-API-Key: sa_your_key"
GET /api/v1/shipments/:id
Get full details of a specific shipment.
curl https://www.shipanywhere.io/api/v1/shipments/SF-0001-XXXX \ -H "X-API-Key: sa_your_key"
API requests are limited to 100 requests per 15 minutes per API key. Rate limit headers are included in responses.
All errors return a JSON object with an error field:
{ "error": "Invalid API key" }
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 400 | Bad request (missing required fields) |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
| 500 | Server error |