Base URL
https://sandbox.crbtrack.com
Authentication
All endpoints require an API key in the X-API-Key header:
curl -H "X-API-Key: <YOUR_API_KEY>" https://api.crbtrack.com/api/v1/...
See Authentication for details on obtaining and managing API keys.
Content Type
All requests must use JSON:
Content-Type: application/json
Endpoints Overview
Legacy Public API
Verbatim legacy endpoints for customers that cannot migrate:
Orders
| Method | Endpoint | Description |
|---|
POST | /api/v1/orders/create | Create a new shipping order |
POST | /api/v1/orders/void | Void one or more orders |
Manifests
| Method | Endpoint | Description |
|---|
POST | /api/v1/manifests/submit | Submit a shipping manifest (AWB) |
Tracking
| Method | Endpoint | Description |
|---|
GET | /api/v1/tracking/{trackingNumber} | Get single parcel tracking |
POST | /api/v1/tracking/batch | Get multiple parcels tracking |
Labels
| Method | Endpoint | Description |
|---|
GET | /api/v1/labels/{trackingNumber} | Get label metadata |
GET | /api/v1/labels/{trackingNumber}/download | Download label file |
POST | /api/v1/labels/{trackingNumber}/reprint | Regenerate a label |
Public Tracking
| Method | Endpoint | Description |
|---|
GET | /track/{trackingNumber} | Public tracking (no auth) |
Successful Response
{
"success": true,
"data": { ... },
"meta": {
"requestId": "req_abc123xyz"
}
}
Error Response
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"message_es": "Mensaje de error en español",
"details": { ... },
"requestId": "req_abc123xyz"
}
}
| Header | Required | Description |
|---|
X-API-Key | Yes | Your API key |
Content-Type | Yes | Must be application/json |
X-Idempotency-Key | No | Prevents duplicate requests |
Accept-Language | No | en or es for response language |
| Header | Description |
|---|
X-Request-Id | Unique request ID for support |
X-RateLimit-Limit | Max requests per window |
X-RateLimit-Remaining | Requests remaining |
X-RateLimit-Reset | When limit resets (Unix timestamp) |
HTTP Status Codes
| Code | Meaning |
|---|
200 | Success |
201 | Created |
400 | Bad Request (validation error) |
401 | Unauthorized (invalid API key) |
403 | Forbidden (insufficient permissions) |
404 | Not Found |
409 | Conflict (duplicate, locked resource) |
429 | Rate Limit Exceeded |
500 | Internal Server Error |
Idempotency
For POST requests that create resources, include an idempotencyKey:
{
"idempotencyKey": "unique-request-id-12345",
...
}
If you retry a request with the same idempotencyKey within 24 hours, the original response is returned without creating a duplicate.
Use your order ID, UUID, or timestamp-based key for idempotency.
List endpoints support pagination:
GET /api/v1/parcels?page=1&limit=50
Response includes pagination metadata:
{
"data": [...],
"meta": {
"page": 1,
"limit": 50,
"total": 1234,
"totalPages": 25
}
}
Try It Now
Use the interactive playground on each endpoint page to test API calls directly in your browser.
Create Your First Order
Start by creating a test order in sandbox mode