FAFuelAtlasDevelopers

Developers / Reference

Changelog

What's new in the FuelAtlas Public API.

Changes to the public /v1 API are versioned and additive where possible. Adding an endpoint, field, scope, error code, or webhook event type is a non-breaking change; removing or renaming one is not, and would ship under a new API version. Subscribe to fleet.provisioned and watch this page for updates.

2026-10-19 — QA follow-ups

Additive changes from an outside QA pass against the sandbox. Nothing here removes or renames a field.

  • GET /v1/trips no longer carries each trip's route polyline by default (a 50-trip page was ~2.5 MB of geometry). Pass include=polyline to get it; GET /v1/trips/{id} is unchanged. This is a behaviour change inside v1, made while the endpoint had no recorded callers (no key had ever listed trips); an unknown include value is now a 422 instead of being ignored.
  • GET /v1/vehicles takes status=active|inactive. Omitted still returns both, so deactivated vehicles can now be left out of a list.
  • The spec says 204 for the deactivate/delete, arrive/depart and acknowledge/skip calls that never returned a body; the behaviour is unchanged.
  • Company test keys act on a sandbox twin of the company (three simulated trucks, synthetic prices, the /v1/sandbox scenario and reset tools and the MCP sandbox tools) instead of the live fleet. Existing company sandbox keys are re-pointed at their twin when this ships.
  • Company production keys have an approval flow: the company owner requests production access on the Developers page, FuelAtlas approves it with a plan (or denies or later revokes it with a reason), and the owner can then create live fa_live_ keys that act on the real fleet. Sandbox keys are unaffected.
  • MCP: every tool carries annotations (readOnlyHint, destructiveHint, idempotentHint), and calling an unknown tool is a JSON-RPC -32602 protocol error rather than a tool error.
  • insufficient_scope names the missing scope in detail and in a new required_scope member. Cap errors (limit, used) now carry those members too.
  • 415 unsupported_media_type is a new error code: a POST without a JSON body or Content-Type: application/json gets the standard envelope instead of a framework ProblemDetails.
  • Unknown /v1/... routes return the envelope (404 resource_not_found with a route hint) instead of an empty body.
  • The OpenAPI document declares servers (https://api.fuelatlas.com) and the Idempotency-Key header on POST /v1/routes, /v1/trips and /v1/fuelings.
  • Timestamps are always UTC with six fractional digits, and numbers never carry trailing zeros, so a create response and the GET that follows agree byte for byte.
  • POST /v1/webhooks/{id}/test works with no body: it sends the endpoint's first subscribed event type (guidance.updated for a wildcard subscription).
  • Developer Console: rotating a revoked or expired key is refused (409 resource_conflict); company keys can no longer be granted the partner-only fleets:manage scope; ownerType is required when creating a key.
  • The validation_failed title reads "Request failed validation" (it applies to query parameters too) and the rate_limited hint names the X-RateLimit-Reset header.

2026-07-01 — v1 launch

The first public release of the FuelAtlas Public API.

  • Fleets & vehicles — provision fleets (partner keys) and manage vehicles, addressable by your own external_ref.
  • Location ingestion — POST /v1/locations batch push (up to 500 items / 1 MB) with independent per-item results.
  • Autoguide — continuous, per-vehicle fuel-stop recommendations with phases and data-freshness grading.
  • Routes & stations — one-shot route + fuel-plan optimize, and station/price queries (nearby and along a corridor).
  • Trips — dispatch-trip lifecycle with stop arrival/departure and progress.
  • Fuelings & savings — record fuelings and roll up fleet savings with an adherence rate.
  • Webhooks — 13 event types, HMAC-SHA256 signatures, retries, replay, and dual-valid secret rotation.
  • Sandbox — a fully simulated fleet driven by fa_test_ keys, with scenarios and reset.
  • RFC 9457 errors — a stable problem+json envelope and a documented error-code registry.
  • Discovery — anonymous OpenAPI at /v1/openapi.json, llms.txt / llms-full.txt, and an MCP server.