API Reference
The cross-cutting rules every endpoint shares — how you authenticate, how errors come back, how pagination and rate limits behave, and the duty-status codes.
Authentication
Every request carries two static headers — no tokens, no refresh. One Provider Key identifies your platform; one Company Key identifies the carrier whose data you're requesting. To switch carriers, swap the Company Key — nothing else changes.
| Header | Value | Scope |
|---|---|---|
X-API-Provider-Key | Your provider key | Identifies your platform. The same for every request. |
X-API-Company-Key | The carrier's company key | Scopes all returned data to that one carrier. |
Key format
system- prefix. Both formats are accepted; new keys are issued without it.Provider Key
Email us for one. Issued once per integration.
Company Key
Each carrier generates theirs from the Carrier API Key Guide and shares it with you.
Errors
A 200 means success, with the payload indata. Any other status is an error:data is nulland the status_code tells you what happened. Branch on the status_code, not the description text.
| Status | When it happens | How to fix |
|---|---|---|
| 400Bad Request | A parameter is missing or malformed — for example a date that is not MM-DD-YYYY, a non-UUID id, or a value above the allowed maximum. | Check the parameter formats and limits in the endpoint's reference, then retry. |
| 401Unauthorized | A key header is missing, or the Provider Key or Company Key is invalid. | Send both key headers, and confirm the Company Key is the one this carrier generated. |
| 404Not Found | The id in the path does not match any record visible to your Company Key — often an id from a different carrier. | Confirm the id belongs to the carrier your Company Key scopes to. List endpoints return valid ids. |
| 429Too Many Requests | You have hit the Provider Key rate limit. | Retry with exponential backoff, and poll no faster than the data changes. Need a higher limit? Email us. |
| 500Server Error | Something failed on our side. | Retry after a short delay. If it persists, email support with the time and the request you sent. |
Error shape
| Field | Type | Description |
|---|---|---|
status_code | integer | HTTP status code (e.g. 401). |
description | string | Human-readable error message. |
data | null | Always null on error. |
Pagination & rate limits
Two pagination styles, depending on the endpoint:
- Page-based (most list endpoints). Use
page(1-indexed) andlimit; start atpage=1and stop whenpage ≥ total_pages. - Token-based (vehicle location history only). Pass the
next_page_tokenfrom the previous response; it's absent on the last page. You can't page backwards.
Pagination fields are part of the response envelope.
Rate limits
X-API-Provider-Key is rate-limited; theX-API-Company-Key is not. Use exponential backoff on a limit, and don't poll faster than data changes (motion data refreshes ~every 60s). Need a higher limit? Email us.Duty status codes
Returned in current_status onLatest Driver Status.
| Code | Meaning |
|---|---|
DS_D | Driving |
DS_ON | On Duty (Not Driving) |
DS_SB | Sleeper Berth |
DS_OFF | Off Duty |
DR_IND_PC | Personal Conveyance |
DR_IND_YM | Yard Move |
HOS milliseconds
Divide by 3,600,000 for hours.
| 28,800,000 | 8 hours |
| 39,600,000 | 11 hours |
| 50,400,000 | 14 hours |
| 252,000,000 | 70 hours |
Tools & downloads
Explore every endpoint interactively, or import the spec into your own client.
API Explorer (Swagger UI)
Send live requests with your keys and see real responses — no setup.
OpenAPI 3.1 spec
Import into Postman, Insomnia, Bruno, or generate a client.
Postman collection
Every endpoint pre-built. Import the file, then set your two keys as variables.
Prefer copy-paste code? See the Recipes for ready-made pagination and sync helpers.