Quickstart: ELD
The location-push path — stream breadcrumbs and subscribe to fuel and arrival events.
An ELD already knows where every truck is and how much fuel is in the tank. That's exactly FuelAtlas's one required input — so an ELD integration is mostly one endpoint (push locations) plus webhooks to get value back out. This is the short path; the TMS quickstart covers full provisioning if you also manage fleets.
0. Confirm your key
curl https://api.fuelatlas.com/v1/me -H "Authorization: Bearer $FA_KEY"You need locations:write (to push) and webhooks:manage (to subscribe); add guidance:read if you'll also read recommendations. Partner keys pass FA-Fleet: <flt_id> on every fleet-scoped call; company keys don't.
1. Make sure vehicles exist
Locations attach to vehicles by your external_ref. Create each truck once (idempotent by VIN), setting tank and mpg so fuel projections are accurate:
curl -X POST https://api.fuelatlas.com/v1/vehicles \
-H "Authorization: Bearer $FA_KEY" \
-H "Content-Type: application/json" \
-d '{ "external_ref": "ELD-8842", "vin": "1FUJGLDR9CLBP8834", "tank_size_gallons": 200, "estimated_mpg": 6.5 }'2. Stream breadcrumbs
This is the workhorse call. Batch your fleet's latest positions and send every 1–5 minutes. Always include fuel_level_percent — as an ELD you have it, and it's what unlocks accurate guidance.
curl -X POST https://api.fuelatlas.com/v1/locations \
-H "Authorization: Bearer $FA_KEY" \
-H "Content-Type: application/json" \
-d '{
"locations": [
{ "external_ref": "ELD-8842", "latitude": 35.1495, "longitude": -90.0490,
"recorded_at": "2026-07-06T15:04:05Z", "fuel_level_percent": 34.0, "speed_mph": 62, "heading_degrees": 91 },
{ "external_ref": "ELD-8843", "latitude": 36.1627, "longitude": -86.7816,
"recorded_at": "2026-07-06T15:04:05Z", "fuel_level_percent": 71.0, "speed_mph": 58, "heading_degrees": 12 }
]
}'Up to 500 items or 1 MB per batch. Each item is accepted or rejected independently — check results for rejects (a rejected row usually means that external_ref isn't created yet). Full detail in Push locations.
3. Subscribe to events
Register a webhook so FuelAtlas pushes the events an ELD cares about instead of you polling:
curl -X POST https://api.fuelatlas.com/v1/webhooks \
-H "Authorization: Bearer $FA_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.youreld.com/fuelatlas",
"event_types": ["vehicle.fuel_low", "guidance.updated", "vehicle.stop_arrived", "fueling.recorded"],
"description": "ELD event feed"
}'Store the secret from the response — you'll need it to verify deliveries. Then verify every delivery's X-FuelAtlas-Signature before trusting it (HMAC-SHA256; code samples in Webhooks).
Useful events for an ELD:
vehicle.fuel_low— surface a refuel prompt in the driver's HOS/ELD UI.guidance.updated— a fresh recommended stop is available; fetch and show it.vehicle.stop_arrived/fueling.recorded— reconcile stops and fuel purchases automatically.
4. (Optional) Show the recommendation
If you want to display the next stop in-cab, read the guidance object for a vehicle whenever guidance.updated fires:
curl https://api.fuelatlas.com/v1/vehicles/$VEHICLE_ID/guidance \
-H "Authorization: Bearer $FA_KEY"stops[0] carries the station, gallons_to_buy, net price, and a driver-ready reason. See Autoguide.
That's the integration
Push locations, verify webhooks, optionally show guidance. Two endpoints do the heavy lifting.
- Push locations — cadence and per-item results.
- Webhooks — signature verification and retries.