Create a load from your TMS and CarrierView texts the driver a tracking link. Read status, live positions and history back over REST, and get new positions pushed to your endpoint by webhook. Tracking runs through the driver's phone — no ELD integration.
API access is included on every plan, including Free.
{
"load_id": "48213",
"driver_phone": "+15551234567",
"mc_number": "882140",
"locations": [
{ "type": "pickup",
"address": "Dallas, TX",
"dateFrom": "2026-10-06 08:00",
"dateTo": "2026-10-06 12:00" },
{ "type": "destination",
"address": "Memphis, TN",
"dateFrom": "2026-10-07 08:00",
"dateTo": "2026-10-07 17:00" }
]
}
// driver gets a text with the tracking link
Keep the CarrierView dashboard, or never open it: the same loads, positions and messages are available to your TMS, customer portal or BI over a token-authenticated REST API.
POST /api/loads with the driver's phone and the stops; the driver gets a text
with a link to the free driver app or an app-less browser tracker.
List loads (active, future, past), read one load with
its stops and arrival times, its last position, or its full position history.
Every new position and every driver chat message arrives as a POST, plus events for loads added or edited in the dashboard and for deleted loads.
Sign up, then Profile → API Token. Tokens belong to a manager or admin user with a verified email.
POST /api/loads with Authorization: Bearer <token>. Store the
id from the response.
GET /api/loads/{id} for status and stops, or
/last-position and /positions-history.
Profile → Webhooks, or PUT /api/webhook/new-position-sent with your
webhook_url.
Every response wraps its data as {"success": true, "data": …}. The full field
reference is in the Documentation page of your dashboard after sign-up.
{
"success": true,
"data": {
"id": 18342,
"load_id": "48213",
"client_url": "https://carrierview.com/client/loads/18342?…",
"route_started": true,
"track_driver": { "phone": "+15551234567", "last_request_time_utc": 1791366300, … },
"locations": [ { "type": "pickup", "arrived": true, "arrived_utc": 1791295200, … }, … ],
"last_position": { "latitude": 34.75, "longitude": -92.29, "created_at_utc": 1791366300, … }
}
}
// new position — POST to your new-position URL { "load": { "id": 18342, "load_id": "48213", … }, "position": { "latitude": 34.75, "longitude": -92.29, "address": "I-40 E, Little Rock, AR", "late_secs": 0, "created_at_utc": 1791366300 } }
success, not only the status code. Validation and permission errors come back as success: false with an error_code.id and don't retry blindly.PATCH /api/loads/{id} replaces values. Send the full emails, dispatchers and MC number you want kept.API access is included on every plan, including Free. Plans are priced by simultaneous active tracks — no per-call or per-load fees.
No demo required. The Free plan includes one active track — try CarrierView on a real load before you roll it out to the team.
Prefer to talk first?