Fleet Support API Reference
v1

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.

Trailing slashes. Every endpoint ends with a /. 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.

HTTPS only. Plain HTTP requests are redirected; never send your key over an unencrypted connection.
					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
true when the request succeeded (HTTP 200).
statusinteger
The HTTP status code, repeated for convenience.
errorstring
A human readable message when success is false, 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.

CodeMeaning
200 OKEverything worked as expected.
400 Bad RequestA parameter failed validation. data.err lists each problem.
401 UnauthorisedThe API key is invalid or revoked, or the job doesn't belong to you.
403 ForbiddenNo API key was sent, or the key can't access this endpoint.
404 Not FoundThe requested resource doesn't exist.
500 Server ErrorSomething 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:

OperatorMeaning
[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

GET/v1/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

GET/v1/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

GET/v1/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_id after this one.
ending_beforeintegeroptional
Return jobs with a job_id before this one. Can't be combined with starting_after.
last_updatedate filteroptional

Only return jobs whose last_update matches 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

GET/v1/jobs/:id/

Retrieves a single job, including its full job_detail log.

Path parameters

idintegerrequired
The job_id of 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
					}