Rate limits
120 requests per minute per key, with short bursts allowed. Hit the cap and you get a 429 with a Retry-After header — back off and retry.
POST /v1/shipments with your pickup and drop-off zones.shipment.delivered webhook.# create a shipment
curl https://api.fleetrails.com/v1/shipments \
-H "Authorization: Bearer fr_live_…" \
-d '{"pickup":{"zone":"yaba"},"dropoff":{"zone":"lekki"},
"customer":{"name":"Ada","phone":"+234…"}}'
Subscribe to events in the console. Every delivery is signed so you can verify it came from us.
POST https://yourapp.example/fleetrails-webhook
FR-Signature: t=1724508000,v1=5f8a…
{
"event": "shipment.delivered",
"data": {
"id": "FR-48213",
"delivered_at": "2026-08-24T13:58:04Z",
"signed_by": "Ada O."
}
}
120 requests per minute per key, with short bursts allowed. Hit the cap and you get a 429 with a Retry-After header — back off and retry.
Errors are JSON, always the same shape:
{"error":{"code":"zone_not_found","message":"…"}}
| Live API | api.fleetrails.com |
| Sandbox API | sandbox.api.fleetrails.com |
| Tracking links | trk.fleetrails.com |
| Status page | status.fleetrails.com |
Book a demo and we’ll flip the switch on your workspace.