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://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.co.uk/v1/owners/ \ -H "Authorization: Bearer fsk_your_api_key"
const res = await fetch("https://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.co.uk/v1/ping/
const res = await fetch("https://fleetsupport-api.cubiccorner.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://fleetsupport-api.cubiccorner.co.uk/v1/owners/ \ -H "Authorization: Bearer fsk_your_api_key"
const res = await fetch("https://fleetsupport-api.cubiccorner.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
- job_idinteger
- Unique identifier for the job. Also used as the pagination cursor.
- statusstring
-
Current status of the job.
Job EnteredJob OngoingPOD RequiredPendingQueryOrder No RequestedPending Perm RepairCompleted Awaiting CostingInvoice PrintedInvoice DisputedCancelled - job_statusstring
- Free-text status detail recorded against the job.
- job_datedatetime
- When the job was raised.
- reg_nostring
- Vehicle registration number.
- vehicle_makestring
- Vehicle manufacturer.
- vehicle_typestring
- Vehicle type.
- faultstring
- Description of the reported fault.
- locationstring
- Where the vehicle is.
- mobiledatetime
- When the repairer was mobilised.
- arrival_datedatetime
- When the repairer arrived on site.
- operatorstring
- The operator handling the job.
- owner_idstring
- ID of the owner the job belongs to.
- owner_namestring
- Name of the owner.
- loadedstring
- Whether the vehicle was loaded.
- transmissionstring
- Vehicle transmission type.
- rigid_articstring
- Whether the vehicle is rigid or articulated.
- driver_errorstring
- Whether the breakdown was attributed to driver error.
- last_updatedatetime
- When the job was last changed. Filter on this to sync changes.
- job_detailarray of objects
-
The job's update log, oldest first.
Show child attributes
- datedatetime
- When the entry was written.
- namestring
- Who wrote the entry.
- notestring
- The entry text.
GET /v1/jobs/ GET /v1/jobs/:id/
{
"job_id": 602210,
"status": "Job Ongoing",
"job_status": "Technician on route",
"job_date": "2026-10-05T13:52:00Z",
"reg_no": "AB12 CDE",
"vehicle_make": "DAF",
"vehicle_type": "Tractor unit",
"fault": "Air leak, unable to build pressure",
"location": "M6 J16 northbound hard shoulder",
"mobile": "2026-10-05T14:05:00Z",
"arrival_date": "2026-10-05T14:41:00Z",
"operator": "Sam",
"owner_id": "ACME01",
"owner_name": "Acme Haulage Ltd",
"loaded": "Yes",
"transmission": "Auto",
"rigid_artic": "Artic",
"driver_error": "No",
"last_update": "2026-10-05T14:41:00Z",
"job_detail": [
{
"date": "2026-10-05T13:52:00Z",
"name": "Sam",
"note": "Driver reports air leak from trailer line."
}
]
}
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://fleetsupport-api.cubiccorner.co.uk/v1/jobs/ \ -H "Authorization: Bearer fsk_your_api_key" \ -d limit=3
const res = await fetch("https://fleetsupport-api.cubiccorner.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": "Job Ongoing",
"reg_no": "AB12 CDE",
"owner_id": "ACME01",
"last_update": "2026-10-05T14:41:00Z"
},
{ "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://fleetsupport-api.cubiccorner.co.uk/v1/jobs/602210/ \ -H "Authorization: Bearer fsk_your_api_key"
const res = await fetch("https://fleetsupport-api.cubiccorner.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": "Job Ongoing",
"reg_no": "AB12 CDE",
"owner_id": "ACME01",
"owner_name": "Acme Haulage Ltd",
"last_update": "2026-10-05T14:41:00Z",
"job_detail": [ ... ]
},
"serverTime": 1759660800123
}