API · AI agents · Webhooks
Ask your fleet a question.
Two minutes and no code if you just want answers. A published API, webhook events and SDKs if you want the same data inside the systems you already run. Either way what comes back is bounded by your own permissions, and never wider.
An actual answer, in the assistant your team already has open — no dashboard, no export.
Which vehicles braked hard yesterday?
Scanned 12 devices① · 37 events② · 4,182 GPS points③
Truck 114 braked hard 3 times yesterday. The worst was 14:07:22 — 62 down to 18 km/h. Route and speed below.
| Vehicle | Time | Peak g |
|---|---|---|
| Truck 11414:07:22 | 14:07:22 | −0.62 g② |
| Truck 11411:48:05 | 11:48:05 | −0.51 g② |
| Truck 11409:22:40 | 09:22:40 | −0.44 g② |
Reconstruction — route and speed drawn from GPS and G-sensor data, not recorded footage.
Three ways in — one key, one permission model
-
MCP
28 tools · 2 min
Register one URL in ChatGPT, Claude or Cursor. Nothing to install.
MCP guide → -
REST API
52 endpoints
Pull vehicles, trips and events into the systems you already run.
API reference → -
Webhooks
5 events · HMAC
We POST to your endpoint the moment something happens.
Webhook guide →
Two readers on this page — start where you belong
You manage the fleet
No code. Register one address in the assistant your team already uses and ask in plain language.
You’ll build the integration
Published endpoints, scopes, webhook events and SDKs. Nothing to request access for.
Your AI knows everything except your fleet.
It reads your inbox and your spreadsheets happily enough. Your vehicles are the one thing it has no way to look up. Connect FLEETA once and the assistant your team already has open answers from the operational record itself — where the vehicles are, which trips ran, which safety events the cameras logged and when.
Answers in seconds
Ask in plain language and the answer comes back from live fleet data — instead of a request that sits in someone else’s queue until Thursday.
One URL, connected once
Nothing to install, nothing to host, nothing to keep running. One address is registered once and the connection is done.
The AI your team already uses
Claude, ChatGPT or Cursor — whichever is already open. Nobody has to learn another tool to get an answer.
500,000+
Vehicles on the road
Reporting in production today, not a pilot count
17
Safety event types detected automatically
Caught on the camera — nobody has to be watching
28
Tools the AI can use
20 read · 6 write
19
Languages it answers in
The same answer, in the language the depot speaks
From the camera outward
An incident doesn’t wait for someone to notice it.
The camera flags the event on the device. From that moment it is recorded, timestamped and tied to the vehicle — so it can reach the person on call, the systems that run your week, and anyone who asks about it a month later.
“Harsh braking · Truck 114 · 14:07”
-
On the vehicle
The camera detects it
On the device · 17 event types
-
FLEETA platform
Recorded · timestamped · tied to the vehicle
-
Without any of this
You hear about it on the next phone call
-
Your team, in seconds
Slack · email · on-call
-
Your systems, on schedule
TMS · ERP · reporting
-
Anyone who asks, later
ChatGPT · Claude · Cursor
Removed work
What stops being someone’s job
Not four new capabilities to evaluate. Four chores that currently have a person’s name on them, and do not need one.
-
01
Logging into a dashboard just to answer one question
The question gets asked where the work already happens, and the answer comes straight back. No login, no filtering, no digging through an afternoon of records.
Which vehicles braked hard yesterday?
Truck 114 braked hard 3 times yesterday. The worst was 14:07 — 62 down to 18 km/h. Route and speed below.
Vehicle Time Peak g Truck 114 14:07:22 −0.62 g Truck 114 11:48:05 −0.51 g Truck 114 09:22:40 −0.44 g Illustrative answer — nobody opened a dashboard to produce it.
-
02
Copying numbers into a spreadsheet every month
The systems that need the figures pull them directly. Month-end stops being a person exporting one report so they can retype it into another.
REST API + SDK
- TMS
- ERP
- Data warehouse
What crosses: Vehicles · trips · safety events · driving reports
-
03
Waiting for a phone call to find out there was an incident
The moment a camera flags something, it lands where your team already looks. You hear about it from the system, not from the customer.
- 14:07:22 Harsh braking · Truck 114
- 14:07:24 Slack #fleet-ops, email, on-call paged
Two seconds, and nobody had to phone anyone. Available from the pro plan upward.
-
04
Asking a developer to build one alert
The person who wants the alert builds it, in the tool they already use, that afternoon. Nothing joins an engineering backlog to get there.
No-code automation
- n8n
- Zapier
- Make
- Google Sheets
What crosses: The same events, without writing code
One platform
One question, four ways to ask it.
Same events, same key, same response shape. The only thing that changes is who has to do the work — and on three of these four, the answer is nobody.
The question
“Which vehicles had harsh braking yesterday?”
Yesterday it was Truck 114 — KR-72-1043 in your fleet record, the id every route below hands back.
You call us
Nobody assembles a spreadsheet to answer this. The events land in the system your team already works in, on the same key and the same scopes the web viewer uses.
curl "https://openapi.fleeta.io/v1/events?type=harsh_braking" \ -H "Authorization: Bearer flt_live_..." # The harsh-braking events themselves, each one carrying the vehicle it happened on.
We call you — nothing to poll, nothing to watch
No one sits in front of a dashboard waiting. The alert reaches whoever is on call before the driver is back at the depot, signed so your system can trust it.
POST /hooks/fleeta # your URL — we open the connectionX-Fleeta-Signature: t=1754575327,v1=8f4c2ad1e6b9... { "id": "evt_2b8f4c1d9a3e", "vehicle_id": "KR-72-1043" } # Arrives seconds after the brake — before anyone thought to ask. Verify, then act.
You call us, on whatever schedule you set
The same person who built your Slack alerts builds this one, in an afternoon. No ticket to engineering, no release to wait for.
GET https://openapi.fleeta.io/v1/events?type=harsh_brakingAuth Bearer flt_live_... # One HTTP node. Route each event to Slack, Sheets, Jira or email.
The agent calls us on your behalf
Nobody logs in to look. The question gets asked in the window they were already working in, and the answer comes back in the same thread.
you › Which vehicles had harsh braking yesterday? ▸ list_events events:read finds evt_2b8f4c1d9a3e on KR-72-1043▸ safety_event_stats events:read counts them per vehicle # One URL registered once. No export, no viewer, no ticket.
Whichever route you took, an event comes back like this
"id": "evt_2b8f4c1d9a3e""vehicle_id": "KR-72-1043""type": "harsh_braking""occurred_at": "2025-08-07T14:02:07Z""severity": "high"
Which event, which vehicle, when it happened and how hard — enough to raise a ticket, message the depot or add a row to the weekly report without opening anything.
The same shape arrives however you asked for it: pulled, pushed, routed by an automation, or read back to you by an assistant.
Write access, gated
An agent cannot touch a vehicle unless a person says yes.
20 of the 27 tools only answer questions. The 6 that can change something stop and wait for a named person — so approving what an assistant is about to do stops being a policy someone has to police, and becomes a card someone reads in five seconds.
20 of 27
Read-only tools
Answer immediately. There is nothing to approve — they cannot change anything.
6
Write tools
Every one of them stops here. No exception, no per-tool setting that turns the gate off.
1
Confirm step
The second call, and the only one that executes an approved write.
The agent asks. Nothing moves.
A write tool call does not write. It comes back as a request card: what would happen, in a sentence, and a note that it is a write.
Proposed action
Reboot the dashcam on Truck 114
Nothing has been sent to the vehicle yet.
A person reads it and decides.
The card goes to a human — the same human who is accountable for the fleet. Cancel and the request dies here. Try it.
Approval required
Reboot the dashcam on Truck 114
Write action, devices:write. Runs only if you approve it.
Approved by you at 14:07:41.
Cancelled. Nothing ran.
Then, and only then, it runs.
The approved action executes through a second, separate call, and the receipt names who approved it. There is no path from a prompt to a vehicle that skips this.
Executed
14:07:41 · approver verified · 1 action executed
Nothing else ran. The reboot the person read is the reboot that happened.
Nothing was executed.
The confirm step was never called and the fleet is unchanged.
Some write actions reach the vehicle itself and spend its mobile data.
Upload a recording off the SD card — uses the vehicle's mobile data. That cost is the reason it sits behind the gate rather than answering like a read.
Same permissions as the web viewer · nothing shared across accounts · nothing changes on a vehicle until a person approves it.
We don’t create new permissions — the AI sees exactly the vehicles that person’s account can already see.
What it does not do
- No autonomous action. All 6 write tools stop at the approval step; the confirm step needs a human before anything reaches a vehicle.
- Your data only. Answers are grounded in your own devices, events, trips and GPS — within the scopes your tier already has, and nothing outside your account.
Tool names and scopes above are the published ones. The vehicle, the timestamp and the wording of the summary are shown illustratively.
The footage itself
The evidence doesn’t ride home in the truck.
The full recording stays on the SD card in the vehicle. When someone needs it, FLEETA recalls it over LTE — after a person approves the upload — and it arrives as a link, not as an errand.
“The insurer wants the actual clip of yesterday’s 14:07.”
-
On the vehicle
The SD card has the full clip
Every drive, recorded on the vehicle
-
Approval required
A person says yes first
It spends the vehicle's mobile data — so it asks
-
Recalled over LTE
Progress you can watch · cancel any time
-
Without this
Someone drives out to pull the SD card
-
A link in your hands
From the portal, the API or your AI
One subscription
Everything on this page is part of the plan you already have.
There is no separate API product and no AI add-on. The plan that gives you the web viewer and live dashcam monitoring also opens the API and the AI connection — priced per camera, managed in the web viewer, and nothing else to buy.
Your FLEETA cloud subscription
Priced per camera · managed in the web viewer
- Free
- Starter
- Standard
- Pro
- Enterprise
-
Web viewer
The fleet console — vehicles, drivers, video, reports, geofences, settings.
-
Live dashcam monitoring
Real-time location, live view and safety alerts on the map.
-
Open API
Included · no extra feeREST, webhooks and the SDK. Your plan sets how often you can call it and what it can reach.
-
AI assistants (MCP)
Included · no extra feeChatGPT, Claude or Cursor connect to your fleet with the same key — nothing to install.
Plans and reach
Published: what each plan can actually do.
Two questions decide this, and neither is technical: where does a fleet our size land, and how often can we actually use it? Both answers are published — few fleet platforms put their scopes and call quotas next to the price.
AI access is included, not a separate line item
Three ways AI reaches the fleet, and the job each one takes off somebody’s desk. None of them is a separate purchase — the scope set simply follows the tier, from 1 scope on the free plan to 15 at Enterprise, so an assistant reaches exactly what your own team already reaches.
-
With the AI you already use
Every planLiveRegister one URL in ChatGPT, Claude or Cursor and ask in plain language. Which questions get an answer follows your plan: vehicle status from the free plan, safety events and trips from Starter, video and reports from Standard, geofences and SD recordings from Pro.
Nobody exports a spreadsheet to answer a question about last week.
-
AI summary cards on safety events
All plansComing soonEvent review gets a written summary card, so a reviewer reads the context instead of piecing it together.
A reviewer would stop reconstructing what happened — the context is already written.
-
Fleet Copilot in the web viewer
EnterpriseLiveA built-in assistant that reads devices, events, trips and GPS in one pass, answers in 19 languages, and opens the map behind its answer — plus remote commands by device name.
Nobody translates the answer for the depot — it comes back in their own language.
Where does a fleet our size land?
At 10 cameras you land on Standard — 70,500 calls a month. That is a question every 37 seconds, around the clock, with room to spare.
At 60 cameras you land on Pro — 990,500 calls a month. That is a question every 3 seconds, around the clock, with room to spare.
At 300 cameras you land on Enterprise — 14,985,500 calls a month. That is 5 questions every second, around the clock, with room to spare.
6 scopes and a sustained 3 requests a second come with it. The full five-plan matrix is on the developer portal.
13 scopes and a sustained 10 requests a second come with it. The full five-plan matrix is on the developer portal.
15 scopes and a sustained 25 requests a second come with it. The full five-plan matrix is on the developer portal.
StandardYour fleet
- Price / camera / mo
- $7
- Max cameras
- 10
- Requests / sec (burst)
- 3 (6)
- Scopes
- 6
- Calls / month
- 70,500
ProYour fleet
- Price / camera / mo
- $10
- Max cameras
- 99
- Requests / sec (burst)
- 10 (25)
- Scopes
- 13
- Calls / month
- 990,500
EnterpriseYour fleet
- Price / camera / mo
- $15
- Max cameras
- 999
- Requests / sec (burst)
- 25 (50)
- Scopes
- 15
- Calls / month
- 14,985,500
Where the call allowance comes from
Monthly calls are 500 + 1,000 × monthly payment ($) — one formula, applied to every tier, so you can work out your own ceiling instead of asking for it.
You do not choose an API tier
The tier is derived from the subscription you already have — there is no separate API product to buy and no second plan to pick. Move up a plan and the scopes, the rate limit and the quota move with it.
Rate limits are per second with the burst ceiling in brackets, and scopes are the count granted at that tier. The cadences above assume a 30-day month and round the pace down, so the rate shown always fits inside the published allowance.
Developer handoff
For the person who has to build it.
You do not have to read any of this. Send your developer this page and the integration stops being a scoping call — the auth model, the event list and the whole tool surface are already published, so the estimate comes back the same day.
What they get
-
52 REST /v1 endpoints across 8 domains
Cursor paging throughout, so a full history export is a loop, not a support ticket.
-
Scope-based permissions, derived from your subscription tier
Nobody hand-assembles a permission set. A key reaches exactly what the plan already grants.
-
OAuth 2.1 — RFC 8414 discovery, RFC 7591 dynamic registration
Clients register themselves. There is no ticket to raise to get an app approved.
-
5 webhook events
HMAC-signed, with automatic retries and a dead-letter queue — nobody has to poll on a cron and nobody has to notice when it stops.
-
Official @fleeta/sdk (JS/TS)
Typed client, same key, same scopes. Auth and paging are already written.
-
Remote, link-style MCP
Nothing to install, nothing to host, nothing for anyone to keep patched.
Send your first request
# Public test key — works right now, no dashcam needed
export FLEETA_KEY="flt_test_ent_0000000000000000001"
curl -s "https://openapi.fleeta.io/v1/devices?limit=5" \
-H "Authorization: Bearer $FLEETA_KEY"Register it with an AI client
claude mcp add --transport http fleeta \
https://mcp.fleeta.io/
https://mcp.fleeta.io/
# Auth: OAuth 2.1 (RFC 8414 discovery + RFC 7591 registration)
# ChatGPT never sees your key — it gets a 1-hour token, refreshed automatically.
{
"mcpServers": {
"fleeta": {
"url": "https://mcp.fleeta.io/",
"headers": { "Authorization": "Bearer flt_live_..." }
}
}
}
{
"mcpServers": {
"fleeta": {
"command": "node",
"args": ["path/to/mcp-server/src/index.js"],
"env": { "FLEETA_API_KEY": "flt_live_..." }
}
}
}
OAuth or a bearer header — your key stays out of the client with OAuth.
Settings → Connectors → Developer mode → Create connector. Pick OAuth; discovery and client registration are automatic.
Drop this into .cursor/mcp.json.
Runs on Node and uses the official @fleeta/sdk under the hood. Prefer the remote URL unless you need a local process.
Same server, four clients
One address for every client — https://mcp.fleeta.io/. Sign in with your key once; with OAuth the key never reaches the client. The public test key works here too.
All 27 tools
20 read, 6 write behind a confirmation step. Each row names the scope it needs, so your developer can tell before writing anything which of these your tier already grants.
| Tool | What it does | Required scope | Access |
|---|---|---|---|
| list_devices | List dashcams, with status filters | devices:read | Read |
| get_device | Single device detail | devices:read | Read |
| list_events | Query the 17 safety event types | events:read | Read |
| safety_event_stats | Safety event statistics | events:read | Read |
| get_event_video | Issue a presigned event video URL | video:read | Read |
| fleet_locations | Real-time locations of all vehicles | gps:read | Read |
| list_trips | Per-vehicle trip history | gps:read | Read |
| trip_track | GPS track of a trip (sampled) | gps:read | Read |
| list_gps_export_jobs | GPS Export job list / status | gps:export | Read |
| list_geofences | Geofence list | geofences:read | Read |
| get_geofence | Single geofence detail | geofences:read | Read |
| geofence_alerts | Geofence enter/exit alert history | geofences:read | Read |
| fleet_summary | Fleet summary (utilization, aggregates) | insights:read | Read |
| driving_report | Driving report, fleet-wide or per vehicle | insights:read | Read |
| api_usage | API usage / quota lookup | usage:read | Read |
| audit_logs | Audit log query | audit:read | Read |
| list_webhooks | Webhook subscription list / status | webhooks:manage | Read |
| list_sd_recordings | Recordings on a dashcam's SD card — asks the device | media:read | Read |
| get_sd_recording_metadata | Thumbnail / GPS track / G-sensor for one recording | media:read | Read |
| get_recall_job | Progress of a recall — how much of the upload has arrived | media:read | Read |
| reboot_device | Reboot a dashcam | devices:write | Write · gated |
| recall_sd_recording | Upload a recording off the SD card — uses the vehicle's mobile data | media:recall | Write · gated |
| cancel_recall_job | Stop an in-flight recall before it finishes uploading | media:recall | Write · gated |
| delete_sd_recording | Delete one recording from the SD card, permanently | media:write | Write · gated |
| create_geofence | Create a circular geofence | geofences:write | Write · gated |
| delete_geofence | Delete a geofence | geofences:write | Write · gated |
| confirm_action | Execute a previously approved write (step 2 of the gate) | scope of the confirmed action | Confirm step |
Frequently asked questions
Which AI assistants work with FLEETA?
Any assistant that supports MCP — ChatGPT (custom connector), Claude (claude.ai, Claude Desktop, Claude Code), Cursor, and others. You register one address, https://mcp.fleeta.io/, and sign in with your API key once.
Can the AI see more than I can?
No. An assistant works through your API key, and a key reaches exactly the vehicles and data your account and plan already allow — the same permissions the web viewer uses. Nothing is shared across accounts.
Can an AI change something on a vehicle?
Not on its own. Most tools only read. The ones that can change something — reboot a dashcam, recall or delete an SD recording, create or delete a geofence — stop and wait for a named person to approve, and only then run through a separate confirmation step.
Is my fleet data used to train AI models?
FLEETA does not use your data to train any model, and the MCP server keeps no copy of what an assistant asks. What the assistant itself does with an answer is governed by that product’s own data policy — check the settings of the client you use.
Does AI access cost extra?
No. It is included in every plan. What the assistant can answer follows your plan’s permissions: vehicle status from the free plan, safety events and trips from Starter, video and reports from Standard, geofences and SD recordings from Pro.
Do I need a developer to set it up?
No. Registering the address in ChatGPT or Claude takes about two minutes and no code. A developer only enters the picture if you want events pushed into your own systems — webhooks or the REST API — and the setup guide for that is on the developer portal.
What changes once it's connected
- Anyone can ask about a vehicle in plain language and get an answer back.
- An assistant reaches exactly what the person asking already reaches — never wider.
- Incidents reach Slack, email or your on-call system seconds after they happen.
- Monthly numbers land in your own reporting instead of a spreadsheet.
- Nothing on a vehicle changes unless a person approves it first.