Developers

A REST API for your own systems

Version 1.2.0 · Specification (OpenAPI 3.1, JSON) · Included in every plan

Read access to your company's vehicles, drivers, orders, tasks, documents, traffic fines, cost centres and invoices — via OAuth2, included in every plan.

Overview

The fleetfeat REST API v1 gives your own systems — ERP, HR, accounting — read access to your company's data. You create an API client in fleetfeat, choose which data it may read, and use it to fetch an access token via OAuth2. The API is included in every plan.

  • Read-only: apart from the token endpoint, every endpoint is a GET; you cannot change data in fleetfeat via the API.
  • A client belongs to exactly one company and only sees its data — always the whole company.
  • JSON, snake_case field names, all timestamps in UTC as ISO 8601, amounts in cents.
  • Lists with cursor pagination and filters by period, licence plate or VIN.
  • At most 300 requests per minute per client.

Quick start

Three steps to the first response. The examples use curl; any other HTTP library works the same way.

1. Create an API client

Log in to fleetfeat and open Settings → API access. Only users with access to the whole company and the permission “Build & export reports” see this area — usually the super admin.

Give the client a name (e.g. “SAP production”) and, under “Released data”, choose only the scopes your integration needs.

After creating it, fleetfeat shows the client ID and the client secret. The secret is shown exactly once; we only store a checksum. If it is lost, renew it in the same place (“Rotate secret”). “Revoke” blocks the client and all its tokens immediately.

2. Fetch a token

Your system exchanges client ID and secret for an access token (OAuth2 client credentials). The token is valid for 60 minutes; after that, simply fetch a new one.

Fetch a token with curl
curl -s -X POST https://fleetfeat.de/api/v1/oauth/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d grant_type=client_credentials

Response:

Token endpoint response
{
  "access_token": "ffat_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "vehicles:read service-orders:read"
}

3. First request

With the token in the header Authorization: Bearer …, request your company's vehicles:

Request vehicles with curl
curl -s "https://fleetfeat.de/api/v1/vehicles?limit=50" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Response (shortened):

Vehicle list response
{
  "data": [
    {
      "id": "…",
      "fin": "…",
      "license_plate": "…",
      "make": "…",
      "model": "…",
      "mileage_km": …,
      "updated_at": "…"
    }
  ],
  "next_cursor": "…"
}

If the response contains a next_cursor, fetch the next page with ?cursor=<value>. On the last page, next_cursor is null.

Scopes and permissions

A scope is a type of data a client may read. You choose the scopes when creating the client; when fetching a token, your system can request a subset with scope. Without the scope, an endpoint responds with 403 insufficient_scope.

Scopes of the REST API v1
ScopeWhat the client readsAdditional permission when creating
vehicles:readRead vehicles
VIN, licence plate, master data, mileage, first registration, ownership and lease end, decommissioning; the current driver only together with drivers:read.
—
drivers:readRead drivers and assignment history (personal data)
Driver assignments: name, profile ID, type and period of the assignment, vehicle. Personal data.
—
service-orders:readRead service orders
Status, service, appointment and vehicle per service order.
—
tasks:readRead fleet tasks
Title, description, due date, priority, status, vehicle and assignee; the driver only together with drivers:read.
“Manage deadlines & licence checks”
documents:readRead vehicle document metadata and issue download links
Vehicle file documents: category, title, document date, amount, SHA-256, size, file type; the file itself only via a signed link.
—
fines:readRead traffic fines (driver assignment only with drivers:read)
File number, offence time, offence, location, authority, amount, deadlines, status; the driver assignment only together with drivers:read. No driving licence data.
—
cost-centers:readRead cost centre master data
Number, name, parent cost centre, company, responsible person, validity.
“See costs & TCO”
invoices:readRead invoices from fleetfeat and issue download links
Every document fleetfeat issued to your company (service, subscription, cancellation, correction): number, status, amounts, dates; PDF and e-invoice only via signed links.
“See invoices & receipts”

A client never returns more than its creator sees in the app. Some scopes therefore also require the matching permission from team management when the client is created:

  • tasks:read → “Manage deadlines & licence checks”
  • cost-centers:read → “See costs & TCO”
  • invoices:read → “See invoices & receipts”

Without this permission, fleetfeat does not allow the scope.

Limits and pagination

  • Rate limit: 300 requests per minute per client. Every data-endpoint response to a valid token carries X-RateLimit-Limit and X-RateLimit-Remaining; above the limit you get 429 with Retry-After (seconds).
  • Rejected requests (403, 400) also count against the limit.
  • Page size: limit from 1 to 200, 50 entries by default.
  • Download links for documents, invoice PDFs and e-invoices are valid for 5 minutes and are fetched without the bearer token.
  • The API rejects unknown parameters with 400 instead of silently ignoring them.

Error format

Every error from the data endpoints has the same format: an object error with a machine-readable code, an English message and — for parameter errors — the field field.

Example error response
{
  "error": {
    "code": "insufficient_scope",
    "message": "This endpoint requires the scope \"drivers:read\"."
  }
}
Error codes of the data endpoints
CodeHTTPMeaning
invalid_token401Token missing, expired or revoked together with the client. Fetch a new token.
insufficient_scope403The token lacks the scope of this endpoint.
module_not_available403The data belongs to a software module your company has not ordered or has hidden in its settings.
invalid_parameter400Unknown or invalid parameter; field names it.
not_found404Unknown ID — or an ID that does not belong to your company.
file_unavailable404No file is stored for this record.
rate_limited429Rate limit exceeded; retry after Retry-After seconds.
internal_error500Unexpected error on our side, without details. Try again later.

The token endpoint follows the OAuth2 standard (RFC 6749 §5.2) with error and error_description, e.g. invalid_client for a wrong client ID or secret.

Data protection

A client moves your company's data into another system — depending on the scopes, including personal data of your employees. You are responsible for that system and its operator: it belongs in your record of processing activities, and you need a data processing agreement (DPA) with its operator.

Driver data — driver assignments, the current driver of a vehicle, drivers on tasks, the driver assignment of traffic fines — is only returned with the scope drivers:read.

Never via the API: driving licence data, traffic fine hearings, notes, email addresses.

Every authenticated request is logged with client, endpoint (without query parameters), status and time, and deleted automatically after 12 months.

Stability promise and changelog

Our promise for your integration:

/v1 stays backwards compatible; new fields may appear without notice, removing or renaming a field only happens with a new major version and at least 6 months' notice.

Changelog

  • Addition without a new version · — 403 driver_data_not_available on driver endpoints (/drivers, /fines) when the person who created the client may not see driver data or no longer belongs to the organisation; driver fields are then omitted on the other endpoints.
  • Addition without a new version · — 403 module_not_available also when the company has hidden the module in its settings (traffic fines, cost centres).
  • Addition without a new version · — New task status erledigt_ausstehend (reported as done, approval by the fleet manager pending).
  • Addition without a new version · — New vehicle fields max_speed_kmh and work_machine_kind.
  • Addition without a new version · — New vehicle fields for commercial vehicles (e.g. gross_weight_kg, axle_count) and electric vehicles (e.g. battery_capacity_kwh, wltp_range_km).
  • 1.2.0 · — Document types: /api/v1/invoices returns subscription invoices, cancellations and corrections in addition to service invoices, with kind and the reference corrects_invoice_id.
  • 1.1.0 · — Tasks, vehicle documents (with download link), traffic fines, cost centres and invoices (with PDF and e-invoice), each with its own scope.
  • 1.0.0 · — First release: token endpoint (OAuth2 client credentials), vehicles, driver assignments and service orders.

Endpoints

Every endpoint of this version, generated from the same specification the server delivers at /api/v1/openapi.json.

Issue an access token (client credentials)

POST /api/v1/oauth/token

RFC 6749 §4.4. Authenticate with HTTP Basic (client_id:client_secret) or with client_id/client_secret in the body. Errors use the RFC 6749 §5.2 format { error, error_description } (plus code/message).

No token needed — authenticate with client ID and secret

Request body: application/x-www-form-urlencoded → TokenRequest · application/json → TokenRequest

Responses: Issue an access token (client credentials)
StatusDescription
200Access token
Schema: TokenResponse
400invalid_request, unsupported_grant_type or invalid_scope
401invalid_client
429Too many token requests (30 per minute per client)

List vehicles

GET /api/v1/vehicles

Vehicles of the organisation, including archived ones (archived_at). from/to filter on updated_at. current_driver is only present with the scope drivers:read.

Scope: vehicles:read

Parameters: List vehicles
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
license_platequerystringExact match; spaces and hyphens are ignored, case-insensitive
finquerystring · max. 17Exact VIN, case-insensitive
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List vehicles
StatusDescription
200One page of results
data: array<Vehicle>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List driver assignments (history)

GET /api/v1/drivers

Driver assignment periods per vehicle, half-open [valid_from, valid_to). valid_to = null is the current assignment. from/to return periods overlapping the range.

Scope: drivers:read

Parameters: List driver assignments (history)
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
license_platequerystringExact match; spaces and hyphens are ignored, case-insensitive
finquerystring · max. 17Exact VIN, case-insensitive
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List driver assignments (history)
StatusDescription
200One page of results
data: array<DriverAssignment>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List service orders

GET /api/v1/service-orders

Service orders (bookings) of the organisation. from/to filter on the scheduled start, or the creation time when no appointment is set.

Scope: service-orders:read

Parameters: List service orders
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
license_platequerystringExact match; spaces and hyphens are ignored, case-insensitive
finquerystring · max. 17Exact VIN, case-insensitive
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List service orders
StatusDescription
200One page of results
data: array<ServiceOrder>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List tasks

GET /api/v1/tasks

Fleet tasks of the organisation, all statuses. from/to filter on the due date (calendar day). driver is only present with the scope drivers:read. 403 module_not_available without the software modules.

Scope: tasks:read

Parameters: List tasks
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
license_platequerystringExact match; spaces and hyphens are ignored, case-insensitive
finquerystring · max. 17Exact VIN, case-insensitive
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List tasks
StatusDescription
200One page of results
data: array<Task>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List vehicle documents (metadata)

GET /api/v1/documents

Documents in the vehicle files: metadata and SHA-256 checksum (null for files stored before 2026-09-08). No file content and no link — use download_path. from/to filter on the upload time. 403 module_not_available without the software modules.

Scope: documents:read

Parameters: List vehicle documents (metadata)
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
license_platequerystringExact match; spaces and hyphens are ignored, case-insensitive
finquerystring · max. 17Exact VIN, case-insensitive
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List vehicle documents (metadata)
StatusDescription
200One page of results
data: array<Document>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List traffic fines

GET /api/v1/fines

Traffic fine cases of the organisation. from/to filter on the offence time. driver_assignment is only present with the scope drivers:read; confirmed: false is a system suggestion, not a confirmed assignment. No driving licence data. 403 module_not_available without the software modules or when the organisation has hidden the traffic fines module.

Scope: fines:read

Parameters: List traffic fines
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
license_platequerystringExact match; spaces and hyphens are ignored, case-insensitive
finquerystring · max. 17Exact VIN, case-insensitive
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List traffic fines
StatusDescription
200One page of results
data: array<Fine>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List cost centres

GET /api/v1/cost-centers

Cost centre master data. from/to filter on updated_at. 403 module_not_available without the software modules or when the organisation has hidden the cost centres module.

Scope: cost-centers:read

Parameters: List cost centres
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List cost centres
StatusDescription
200One page of results
data: array<CostCenter>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

List invoices from fleetfeat

GET /api/v1/invoices

All documents fleetfeat issued to the organisation: service invoices (kind: service), subscription invoices (subscription), cancellations (cancellation) and corrections incl. reduction documents (correction); the latter two reference the original via corrects_invoice_id. from/to filter on the invoice date (calendar day). Files via pdf.download_path and e_invoice.download_path.

Scope: invoices:read

Parameters: List invoices from fleetfeat
NameInTypeDescription
limitqueryinteger · 1–200 · default 50
cursorquerystringOpaque cursor from next_cursor
fromquerystringISO 8601 date (00:00 UTC) or date-time with time zone
toquerystringISO 8601 date (00:00 UTC) or date-time with time zone
Responses: List invoices from fleetfeat
StatusDescription
200One page of results
data: array<Invoice>
next_cursor: string · nullable — Pass as cursor to fetch the next page; null on the last page.
Header: X-RateLimit-Limit, X-RateLimit-Remaining
400Invalid parameter
Schema: Error
401Missing, expired or revoked token
Schema: Error
403Token lacks the required scope (insufficient_scope), or the data belongs to the software modules and the organisation has not ordered them or has hidden the module in its settings (module_not_available), or the endpoint returns personal driver data and the client's creator may not see driver data or no longer belongs to the organisation (driver_data_not_available)
Schema: Error
429Rate limit exceeded (300 requests per minute per client)
Schema: Error
Header: Retry-After (Seconds until the window resets)

Data models

Error

Schema Error
FieldTypeDescription
error requiredobject
error.code requiredstring · one of invalid_token, insufficient_scope, module_not_available, invalid_parameter, not_found, file_unavailable, rate_limited, internal_error
error.message requiredstring
error.fieldstringThe offending parameter, if any

TokenRequest

Schema TokenRequest
FieldTypeDescription
grant_type requiredstring · = client_credentials
scopestringSpace-separated subset of the client's scopes; default all
client_idstring
client_secretstring

TokenResponse

Schema TokenResponse
FieldTypeDescription
access_token requiredstring
token_type requiredstring · = Bearer
expires_in requiredinteger
scope requiredstring

Vehicle

Schema Vehicle
FieldTypeDescription
idstring (uuid)
finstring
license_platestring · nullable
makestring · nullable
modelstring · nullable
yearinteger · nullable
vehicle_typestring · nullable
fuel_typestring · nullable
usage_typestring · nullable
mileage_kminteger · nullable
first_registrationstring (date) · nullable
ownershipstring · nullable
leasing_endstring (date) · nullable
gross_weight_kginteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
empty_weight_kginteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
length_mminteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
width_mminteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
height_mminteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
axle_countinteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
brake_systemstring · one of ungebremst, auflauf, druckluft · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
trailer_kindstring · one of tandem_kasten, kipper, tieflader, bauwagen, tankanhaenger, sattelauflieger, sonstiges · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
coupling_typestring · one of kugelkopf, bolzen, sattelkupplung · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
truck_bodystring · one of pritsche, kipper, koffer, sattelzugmaschine, kran, sonstiges · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
towing_capacity_kginteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
has_tachographboolean · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
adr_equippedboolean · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
max_speed_kmhinteger · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
work_machine_kindstring · one of erdbau, walze, sonstige · nullableCommercial-vehicle master data. Null unless it applies to vehicle_type (trucks, trailers; vans: gross weight only).
battery_capacity_kwhnumber · nullableElectric-vehicle data. Null unless it applies to fuel_type.
wltp_range_kminteger · nullableElectric-vehicle data. Null unless it applies to fuel_type.
electric_range_kminteger · nullableElectric-vehicle data. Null unless it applies to fuel_type.
co2_g_kminteger · nullableElectric-vehicle data. Null unless it applies to fuel_type.
charging_power_ac_kwnumber · nullableElectric-vehicle data. Null unless it applies to fuel_type.
charging_power_dc_kwnumber · nullableElectric-vehicle data. Null unless it applies to fuel_type.
high_voltage_systemboolean · nullableElectric-vehicle data. Null unless it applies to fuel_type.
archived_atstring (date-time) · nullable
archive_reasonstring · nullable
current_driverobject · nullableOnly with scope drivers:read
current_driver.namestring · nullable
current_driver.profile_idstring · nullable
created_atstring (date-time)
updated_atstring (date-time)

DriverAssignment

Schema DriverAssignment
FieldTypeDescription
idstring (uuid)
driverobject
driver.namestring
driver.profile_idstring · nullable
vehicleobject
vehicle.idstring (uuid)
vehicle.license_platestring · nullable
vehicle.finstring · nullable
assignment_typestring · one of dauerhaft, temporaer, pool
valid_fromstring (date-time)
valid_tostring (date-time) · nullable
created_atstring (date-time)

ServiceOrder

Schema ServiceOrder
FieldTypeDescription
idstring (uuid)
statusstring · one of awaiting_payment, requested, offered, accepted, scheduled, in_progress, awaiting_acceptance, done, cancelled, expired
serviceobject
service.slugstring
service.name_destring
service.name_enstring
vehicleobject · nullable
vehicle.idstring (uuid)
vehicle.license_platestring · nullable
vehicle.finstring · nullable
scheduled_startstring (date-time) · nullable
scheduled_endstring (date-time) · nullable
created_atstring (date-time)
updated_atstring (date-time)

Task

Schema Task
FieldTypeDescription
idstring (uuid)
titlestring
descriptionstring · nullable
due_onstring (date)
prioritystring · one of niedrig, mittel, hoch
statusstring · one of offen, erledigt_ausstehend, erledigt, storniert
done_bystring · one of fahrer, fuhrpark, service · nullable
vehicleobject · nullable
vehicle.idstring (uuid)
vehicle.license_platestring · nullable
vehicle.finstring · nullable
assigneeobject · nullable
assignee.profile_idstring (uuid)
assignee.namestring · nullable
driverobject · nullableOnly with scope drivers:read
driver.profile_idstring (uuid)
driver.namestring · nullable
completed_via_service_order_idstring (uuid) · nullable
completed_atstring (date-time) · nullable
cancel_reasonstring · nullable
created_atstring (date-time)
updated_atstring (date-time)

Document

Schema Document
FieldTypeDescription
idstring (uuid)
vehicleobject · nullable
vehicle.idstring (uuid)
vehicle.license_platestring · nullable
vehicle.finstring · nullable
categorystring
titlestring
issued_onstring (date) · nullable
amount_centsinteger · nullable
fileobject
file.sha256string · nullableLowercase hex SHA-256; null for files before 2026-09-08
file.byte_sizeinteger · nullable
file.media_typestring · nullable
supersededbooleanAn older version of a replaced cost receipt
after_decommissionboolean
download_pathstring
created_atstring (date-time)

Fine

Schema Fine
FieldTypeDescription
idstring (uuid)
vehicleobject · nullable
vehicle.idstring (uuid)
vehicle.license_platestring · nullable
vehicle.finstring · nullable
file_numberstring · nullable
offense_atstring (date-time)
offense_typestring
locationstring · nullable
authoritystring · nullable
amount_centsinteger
due_onstring (date) · nullable
hearing_due_onstring (date) · nullable
statusstring
paid_atstring (date-time) · nullable
has_documentboolean
driver_assignmentobject · nullableOnly with scope drivers:read
driver_assignment.namestring · nullable
driver_assignment.profile_idstring (uuid) · nullable
driver_assignment.sourcestring
driver_assignment.confirmedboolean
created_atstring (date-time)
updated_atstring (date-time)

CostCenter

Schema CostCenter
FieldTypeDescription
idstring (uuid)
numberstring
namestring
parent_idstring (uuid) · nullable
companyobject · nullable
company.idstring (uuid)
company.namestring
responsibleobject · nullable
responsible.profile_idstring (uuid)
responsible.namestring · nullable
valid_fromstring (date)
valid_tostring (date) · nullable
activeboolean
created_atstring (date-time)
updated_atstring (date-time)

Invoice

Schema Invoice
FieldTypeDescription
idstring (uuid)
kindstring · one of service, subscription, cancellation, correction
numberstring
statusstring · one of open, collecting, paid, cancelled, issuedcollecting = direct debit in progress (subscription only); issued = cancellations and corrections, which carry no payment status
corrects_invoice_idstring (uuid) · nullableCancellation/correction only: the original invoice (an id from this list)
corrects_invoice_numberstring · nullable
service_labelstring · nullablenull for subscription invoices
service_datestring (date) · nullable
service_periodobject · nullableSubscription invoices only: the billed period
service_period.startstring (date)
service_period.endstring (date)
service_order_idsarray<string (uuid)>
currencystring · = EUR
net_centsinteger
vat_rate_bpintegerVAT rate in basis points (1900 = 19 %)
vat_centsinteger
gross_centsinteger
issued_onstring (date)
due_onstring (date) · nullable
paid_atstring (date-time) · nullable
cancelled_atstring (date-time) · nullable
pdfobject
pdf.sha256string · nullable
pdf.byte_sizeinteger · nullable
pdf.download_pathstring
e_invoiceobject · nullable
e_invoice.formatstring · one of zugferd, xrechnung
e_invoice.sha256string
e_invoice.byte_sizeinteger · nullable
e_invoice.validboolean · nullable
e_invoice.download_pathstring
created_atstring (date-time)

Questions about your integration? Write to info@fleetfeat.de.