API Reference
Fleet Support API
The Fleet Support API gives you programmatic access to your breakdown and repair jobs, so you can keep your own fleet systems in step with Fleet Support.
The API is organised around REST. It has predictable resource-oriented URLs, returns JSON-encoded responses, and uses standard HTTP response codes and bearer token authentication.
/. Requests without one, e.g. /v1/jobs, are answered with a 301 redirect.
Try it with Postman
Download the Postman collection and import it into Postman. Then set the collection's apiKey variable to your API key, and every request is ready to send.
https://api.fleetsupportops.co.uk/v1/
Authentication
The API uses API keys to authenticate requests. Send your key as a bearer token in the Authorization header of every request.
API keys begin with fsk_. They carry the same access to your jobs as your Fleet Support account, so keep them secure: don't share them in public places such as source control or client-side code.
Requests to an endpoint that needs a key fail with 403 Forbidden if no key is sent. A key that is invalid or revoked fails with 401 Unauthorised on any endpoint.
curl https://api.fleetsupportops.co.uk/v1/owners/ \ -H "Authorization: Bearer fsk_your_api_key"
const res = await fetch("https://api.fleetsupportops.co.uk/v1/owners/", {
headers: { Authorization: "Bearer fsk_your_api_key" }
});
const json = await res.json();
Responses
Every response, successful or not, is wrapped in the same envelope. The resource you asked for is in data.
Attributes
- successboolean
truewhen the request succeeded (HTTP 200).- statusinteger
- The HTTP status code, repeated for convenience.
- errorstring
- A human readable message when
successisfalse, otherwise empty. - dataobject | array
- The response payload. Its shape depends on the endpoint.
- serverTimeinteger
- Server tick count when the response was produced. Useful when reporting issues.
{
"success": true,
"status": 200,
"error": "",
"data": {},
"serverTime": 1759660800123
}
Errors
The API uses conventional HTTP response codes. Codes in the 2xx range mean success, 4xx mean the request was wrong in some way (a missing parameter, a bad token), and 5xx mean something went wrong on our side.
| Code | Meaning |
|---|---|
200 OK | Everything worked as expected. |
400 Bad Request | A parameter failed validation. data.err lists each problem. |
401 Unauthorised | The API key is invalid or revoked, or the job doesn't belong to you. |
403 Forbidden | No API key was sent, or the key can't access this endpoint. |
404 Not Found | The requested resource doesn't exist. |
500 Server Error | Something went wrong on our end. |
For validation failures, each entry in data.err names the field, the value received and a msg explaining what is expected.
{
"success": false,
"status": 400,
"error": "Invalid data",
"data": {
"isValid": false,
"err": [
{
"field": "limit",
"value": "500",
"defined": true,
"label": "limit of returned result count",
"msg": "limit of returned result count must be between 1 and 100"
}
]
},
"serverTime": 1759660800123
}
Pagination
List endpoints return results in pages using cursor-based pagination on the object ID. Pass limit to set the page size, then starting_after with the last ID you received to fetch the next page, or ending_before with the first ID to fetch the previous one.
List responses include a has_more flag that is true while further results remain.
Parameters
- limitintegeroptional
- Number of objects to return, between 1 and 100. Defaults to 10.
- starting_afterintegeroptional
- A cursor: return objects with an ID greater than this one.
- ending_beforeintegeroptional
- A cursor: return objects with an ID less than this one. Can't be combined with
starting_after.
curl -G https://api.fleetsupportops.co.uk/v1/jobs/ \ -H "Authorization: Bearer fsk_your_api_key" \ -d limit=25 \ -d starting_after=602210
const params = new URLSearchParams({ limit: 25, starting_after: 602210 });
const res = await fetch(`https://api.fleetsupportops.co.uk/v1/jobs/?${params}`, {
headers: { Authorization: "Bearer fsk_your_api_key" }
});
Dates & filtering
All dates returned by the API are ISO 8601 strings in UTC, e.g. 2026-10-05T14:30:00Z.
Date filters accept a range operator in square brackets. Combine them to build a window:
| Operator | Meaning |
|---|---|
[gt] | Greater than |
[gte] | Greater than or equal to |
[lt] | Less than |
[lte] | Less than or equal to |
Values can be a Unix timestamp (1759660800), a date (2026-10-05) or a date-time with a timezone (2026-10-05T14:30:00Z).
curl -G https://api.fleetsupportops.co.uk/v1/jobs/ \ -H "Authorization: Bearer fsk_your_api_key" \ --data-urlencode "last_update[gte]=2026-10-01" \ --data-urlencode "last_update[lt]=2026-10-08"
const params = new URLSearchParams({
"last_update[gte]": "2026-10-01",
"last_update[lt]": "2026-10-08"
});
const res = await fetch(`https://api.fleetsupportops.co.uk/v1/jobs/?${params}`, {
headers: { Authorization: "Bearer fsk_your_api_key" }
});
Ping
A lightweight health check. Returns an empty successful response. No authentication is required.
Parameters
No parameters.
Returns
The standard response envelope with an empty data object.
curl https://api.fleetsupportops.co.uk/v1/ping/
const res = await fetch("https://api.fleetsupportops.co.uk/v1/ping/");
{
"success": true,
"status": 200,
"error": "",
"data": "",
"serverTime": 1759660800123
}
Owners
An owner is a fleet account whose jobs you can see. A single API key can have access to several owners, and every job belongs to exactly one. Use owner IDs to narrow job listings with the owner parameter.
GET /v1/owners/
List owners
Returns the IDs of all owners the authenticated API key has access to.
Parameters
No parameters.
Returns
- ownersarray of strings
- Owner IDs available to this key.
curl https://api.fleetsupportops.co.uk/v1/owners/ \ -H "Authorization: Bearer fsk_your_api_key"
const res = await fetch("https://api.fleetsupportops.co.uk/v1/owners/", {
headers: { Authorization: "Bearer fsk_your_api_key" }
});
{
"success": true,
"status": 200,
"error": "",
"data": {
"owners": ["ACME01", "ACME02"]
},
"serverTime": 1759660800123
}
Jobs
A job is a single breakdown or repair call-out for one of your vehicles. It records the vehicle, the fault, where it happened, its current status and a timestamped log of updates.
The job object
Every job has the attributes below. Text values are empty strings when not recorded, and dates are empty when not set.
- job_idinteger
- Unique identifier for the job. Also used as the pagination cursor.
- agentsarray of integers
- IDs of the repair agents assigned to the job, up to three.
- arrival_datedatetime
- When the agent arrived at the vehicle.
- callerobject
-
The person who reported the breakdown.
Show child attributes
- namestring
- Caller's name.
- contact_nostring
- Caller's phone number.
- clinic_datedatetime
- Clinic date for the job, if one was booked.
- driverobject
-
The vehicle's driver.
Show child attributes
- namestring
- Driver's name.
- contact_nostring
- Driver's phone number.
- driver_errorstring
- Whether the breakdown was put down to driver error.
- faultobject
-
The reported fault.
Show child attributes
- descriptionstring
- Description of the fault.
- codestring
- Fault code.
- typestring
- Fault type.
- fleet_nostring
- The owner's fleet number for the vehicle.
- fridge_makestring
- Make of the refrigeration unit, for refrigerated vehicles.
- is_damagedboolean
- Whether the vehicle was damaged.
- is_first_time_fixboolean
- Whether the fault was fixed on the first visit.
- is_motboolean
- Whether the job is MOT related.
- is_serviceboolean
- Whether the job is a service.
- job_datedatetime
- When the job was raised.
- job_detailarray of objects
-
The job's update log, most recent entry first.
Show child attributes
- datedatetime
- When the entry was written.
- namestring
- Who wrote the entry.
- notestring
- The entry text.
- last_updatedatetime
- When the job was last changed. Filter on this to sync changes.
- loadedstring
- Whether the vehicle was loaded or empty.
- locationobject
-
Where the vehicle is.
Show child attributes
- descriptionstring
- Description of the location.
- postcodestring
- Postcode of the location, if known.
- mobile_datedatetime
- When the vehicle was mobile again.
- operatorstring
- The vehicle's operator.
- order_nostring
- Order number for the job.
- ownerobject
-
The owner the job belongs to.
Show child attributes
- idstring
- Owner ID, as returned by List owners.
- namestring
- Owner name.
- special_instructionsstring
- Any special instructions for the job.
- statusstring
-
Current status of the job.
Job EnteredJob OngoingPOD RequiredPendingQueryOrder No RequestedPending Perm RepairCompleted Awaiting CostingInvoice PrintedInvoice DisputedCancelled - tail_liftobject
-
The vehicle's tail lift, if it has one.
Show child attributes
- makestring
- Tail lift make.
- typestring
- Tail lift type.
- tel_nostring
- Contact telephone number for the job.
- trailer_box_availableboolean
- Whether the trailer box is available.
- trailer_nostring
- Trailer number.
- tyreobject
-
Tyre details, for tyre jobs.
Show child attributes
- sizestring
- Tyre size.
- loadstring
- Tyre load rating.
- tyre-posobject
-
Which tyre positions are affected, for tyre jobs.
Show child attributes
- steer_axleboolean
- Steer axle.
- lift_axleboolean
- Lift axle.
- drive_axleboolean
- Drive axle.
- trailerboolean
- Trailer.
- vanboolean
- Van.
- tyre_assistancestring
- Tyre assistance details.
- unit_available_to_testboolean
- Whether the unit is available to test.
- vehicleobject
-
The vehicle.
Show child attributes
- regstring
- Registration number.
- makestring
- Manufacturer.
- typestring
- Model or type.
- colourstring
- Colour.
- rigid_articstring
- Whether the vehicle is rigid or articulated.
- transmissionstring
- Transmission type.
- windscreen_statestring
- Windscreen condition, for windscreen jobs.
GET /v1/jobs/ GET /v1/jobs/:id/
{
"job_id": 602210,
"agents": [4471],
"arrival_date": "2026-10-05T14:41:00Z",
"caller": {
"name": "SAM PATEL",
"contact_no": "07700 900123"
},
"clinic_date": "",
"driver": {
"name": "JO",
"contact_no": "07700 900456"
},
"driver_error": "No Driver Error",
"fault": {
"description": "AIR LEAK, UNABLE TO BUILD PRESSURE",
"code": "AB07",
"type": ""
},
"fleet_no": "T112",
"fridge_make": "",
"is_damaged": false,
"is_first_time_fix": true,
"is_mot": false,
"is_service": false,
"job_date": "2026-10-05T13:52:00Z",
"job_detail": [
{
"date": "2026-10-05T15:20:00Z",
"name": "Alexm",
"note": "Job Completed."
},
{
"date": "2026-10-05T14:05:00Z",
"name": "Alexm",
"note": "AGENT MOBILE, ETA 40 MINS."
}
],
"last_update": "2026-10-05T15:20:00Z",
"loaded": "Loaded",
"location": {
"description": "M6 J16 NORTHBOUND HARD SHOULDER",
"postcode": ""
},
"mobile_date": "2026-10-05T14:05:00Z",
"operator": "ACME HAULAGE",
"order_no": "PO-48213",
"owner": {
"id": "ACME01",
"name": "ACME HAULAGE LTD"
},
"special_instructions": "",
"status": "Completed Awaiting Costing",
"tail_lift": {
"make": "",
"type": ""
},
"tel_no": "01632 960123",
"trailer_box_available": false,
"trailer_no": "TR4410",
"tyre": {
"size": "",
"load": ""
},
"tyre-pos": {
"steer_axle": false,
"lift_axle": false,
"drive_axle": false,
"trailer": false,
"van": false
},
"tyre_assistance": "",
"unit_available_to_test": false,
"vehicle": {
"reg": "AB12 CDE",
"make": "DAF",
"type": "XF",
"colour": "WHITE",
"rigid_artic": "Articulated",
"transmission": "Automatic"
},
"windscreen_state": ""
}
List jobs
Returns a page of jobs across all owners your key can access, ordered by job_id. Use the pagination parameters to walk through results and last_update to pick up only what has changed.
Parameters
- ownerstringoptional
- Comma-separated owner IDs to restrict results to. IDs your key can't access are ignored. Defaults to all of your owners.
- limitintegeroptional
- Page size, 1 to 100. Defaults to 10.
- starting_afterintegeroptional
- Return jobs with a
job_idafter this one. - ending_beforeintegeroptional
- Return jobs with a
job_idbefore this one. Can't be combined withstarting_after. - last_updatedate filteroptional
-
Only return jobs whose
last_updatematches the range.Show child parameters
- last_update[gt]date
- After this date.
- last_update[gte]date
- On or after this date.
- last_update[lt]date
- Before this date.
- last_update[lte]date
- On or before this date.
Returns
An object with a data array of up to limit jobs and a has_more flag.
curl -G https://api.fleetsupportops.co.uk/v1/jobs/ \ -H "Authorization: Bearer fsk_your_api_key" \ -d limit=3
const res = await fetch("https://api.fleetsupportops.co.uk/v1/jobs/?limit=3", {
headers: { Authorization: "Bearer fsk_your_api_key" }
});
const { data } = await res.json();
{
"success": true,
"status": 200,
"error": "",
"data": {
"has_more": true,
"msg": "",
"data": [
{
"job_id": 602210,
"status": "Completed Awaiting Costing",
"last_update": "2026-10-05T15:20:00Z",
"owner": { "id": "ACME01", "name": "ACME HAULAGE LTD" },
"vehicle": { "reg": "AB12 CDE", "make": "DAF", ... },
...
},
{ "job_id": 602214, ... },
{ "job_id": 602231, ... }
]
},
"serverTime": 1759660800123
}
Retrieve a job
Retrieves a single job, including its full job_detail log.
Path parameters
- idintegerrequired
- The
job_idof the job to retrieve.
Returns
A job object. Returns 404 if the job doesn't exist, or 401 if it belongs to an owner your key can't access.
curl https://api.fleetsupportops.co.uk/v1/jobs/602210/ \ -H "Authorization: Bearer fsk_your_api_key"
const res = await fetch("https://api.fleetsupportops.co.uk/v1/jobs/602210/", {
headers: { Authorization: "Bearer fsk_your_api_key" }
});
const { data: job } = await res.json();
{
"success": true,
"status": 200,
"error": "",
"data": {
"job_id": 602210,
"status": "Completed Awaiting Costing",
"last_update": "2026-10-05T15:20:00Z",
"owner": { "id": "ACME01", "name": "ACME HAULAGE LTD" },
"vehicle": { "reg": "AB12 CDE", "make": "DAF", ... },
"job_detail": [ ... ],
...
},
"serverTime": 1759660800123
}