openapi: 3.0.1 info: title: Fleetio Developer API description: >- JSON REST API for the Fleetio fleet management platform. Manage vehicles, contacts, fuel entries, service entries, work orders, service reminders, parts and inventory, inspections, and issues, and register webhooks for event notifications. All access is over HTTPS and all data is sent and received as JSON. termsOfService: https://www.fleetio.com/legal/terms contact: name: Fleetio Developer Support url: https://developer.fleetio.com/ version: '2025-05-05' servers: - url: https://secure.fleetio.com/api description: Fleetio production API security: - AuthorizationToken: [] AccountToken: [] tags: - name: Vehicles - name: Contacts - name: Fuel Entries - name: Service Entries - name: Work Orders - name: Service Reminders - name: Parts - name: Inventory Journal Entries - name: Inspections - name: Issues - name: Webhooks paths: /v1/vehicles: get: operationId: listVehicles tags: - Vehicles summary: List vehicles description: Returns a paginated array of all vehicles in the account. parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of vehicles. content: application/json: schema: type: array items: $ref: '#/components/schemas/Vehicle' post: operationId: createVehicle tags: - Vehicles summary: Create a vehicle requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Vehicle' responses: '201': description: The created vehicle. content: application/json: schema: $ref: '#/components/schemas/Vehicle' /v1/vehicles/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getVehicle tags: - Vehicles summary: Get a vehicle responses: '200': description: The requested vehicle. content: application/json: schema: $ref: '#/components/schemas/Vehicle' patch: operationId: updateVehicle tags: - Vehicles summary: Update a vehicle requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Vehicle' responses: '200': description: The updated vehicle. content: application/json: schema: $ref: '#/components/schemas/Vehicle' delete: operationId: deleteVehicle tags: - Vehicles summary: Delete a vehicle responses: '204': description: The vehicle was deleted. /v1/contacts: get: operationId: listContacts tags: - Contacts summary: List contacts parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of contacts. content: application/json: schema: type: array items: $ref: '#/components/schemas/Contact' post: operationId: createContact tags: - Contacts summary: Create a contact requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Contact' responses: '201': description: The created contact. content: application/json: schema: $ref: '#/components/schemas/Contact' /v1/contacts/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getContact tags: - Contacts summary: Get a contact responses: '200': description: The requested contact. content: application/json: schema: $ref: '#/components/schemas/Contact' patch: operationId: updateContact tags: - Contacts summary: Update a contact requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Contact' responses: '200': description: The updated contact. content: application/json: schema: $ref: '#/components/schemas/Contact' delete: operationId: deleteContact tags: - Contacts summary: Delete a contact responses: '204': description: The contact was deleted. /v1/fuel_entries: get: operationId: listFuelEntries tags: - Fuel Entries summary: List fuel entries parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of fuel entries. content: application/json: schema: type: array items: $ref: '#/components/schemas/FuelEntry' post: operationId: createFuelEntry tags: - Fuel Entries summary: Create a fuel entry requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FuelEntry' responses: '201': description: The created fuel entry. content: application/json: schema: $ref: '#/components/schemas/FuelEntry' /v1/fuel_entries/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getFuelEntry tags: - Fuel Entries summary: Get a fuel entry responses: '200': description: The requested fuel entry. content: application/json: schema: $ref: '#/components/schemas/FuelEntry' patch: operationId: updateFuelEntry tags: - Fuel Entries summary: Update a fuel entry requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FuelEntry' responses: '200': description: The updated fuel entry. content: application/json: schema: $ref: '#/components/schemas/FuelEntry' delete: operationId: deleteFuelEntry tags: - Fuel Entries summary: Delete a fuel entry responses: '204': description: The fuel entry was deleted. /v1/service_entries: get: operationId: listServiceEntries tags: - Service Entries summary: List service entries parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of service entries. content: application/json: schema: type: array items: $ref: '#/components/schemas/ServiceEntry' post: operationId: createServiceEntry tags: - Service Entries summary: Create a service entry requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceEntry' responses: '201': description: The created service entry. content: application/json: schema: $ref: '#/components/schemas/ServiceEntry' /v1/service_entries/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getServiceEntry tags: - Service Entries summary: Get a service entry responses: '200': description: The requested service entry. content: application/json: schema: $ref: '#/components/schemas/ServiceEntry' patch: operationId: updateServiceEntry tags: - Service Entries summary: Update a service entry requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceEntry' responses: '200': description: The updated service entry. content: application/json: schema: $ref: '#/components/schemas/ServiceEntry' /v1/service_reminders: get: operationId: listServiceReminders tags: - Service Reminders summary: List service reminders parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of service reminders. content: application/json: schema: type: array items: $ref: '#/components/schemas/ServiceReminder' /v1/service_reminders/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getServiceReminder tags: - Service Reminders summary: Get a service reminder responses: '200': description: The requested service reminder. content: application/json: schema: $ref: '#/components/schemas/ServiceReminder' /v1/work_orders: get: operationId: listWorkOrders tags: - Work Orders summary: List work orders parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of work orders. content: application/json: schema: type: array items: $ref: '#/components/schemas/WorkOrder' post: operationId: createWorkOrder tags: - Work Orders summary: Create a work order requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WorkOrder' responses: '201': description: The created work order. content: application/json: schema: $ref: '#/components/schemas/WorkOrder' /v1/work_orders/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getWorkOrder tags: - Work Orders summary: Get a work order responses: '200': description: The requested work order. content: application/json: schema: $ref: '#/components/schemas/WorkOrder' patch: operationId: updateWorkOrder tags: - Work Orders summary: Update a work order requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WorkOrder' responses: '200': description: The updated work order. content: application/json: schema: $ref: '#/components/schemas/WorkOrder' /v1/parts: get: operationId: listParts tags: - Parts summary: List parts parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of parts. content: application/json: schema: type: array items: $ref: '#/components/schemas/Part' post: operationId: createPart tags: - Parts summary: Create a part requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Part' responses: '201': description: The created part. content: application/json: schema: $ref: '#/components/schemas/Part' /v1/parts/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getPart tags: - Parts summary: Get a part responses: '200': description: The requested part. content: application/json: schema: $ref: '#/components/schemas/Part' patch: operationId: updatePart tags: - Parts summary: Update a part requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Part' responses: '200': description: The updated part. content: application/json: schema: $ref: '#/components/schemas/Part' /v1/inventory_journal_entries: get: operationId: listInventoryJournalEntries tags: - Inventory Journal Entries summary: List inventory journal entries parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of inventory journal entries. content: application/json: schema: type: array items: $ref: '#/components/schemas/InventoryJournalEntry' /v1/inspection_forms: get: operationId: listInspectionForms tags: - Inspections summary: List inspection forms parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of inspection forms. content: application/json: schema: type: array items: $ref: '#/components/schemas/InspectionForm' /v1/submitted_inspection_forms: get: operationId: listSubmittedInspectionForms tags: - Inspections summary: List submitted inspection forms parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of submitted inspection forms. content: application/json: schema: type: array items: $ref: '#/components/schemas/SubmittedInspectionForm' /v1/issues: get: operationId: listIssues tags: - Issues summary: List issues parameters: - $ref: '#/components/parameters/PerPage' - $ref: '#/components/parameters/StartCursor' responses: '200': description: A list of issues. content: application/json: schema: type: array items: $ref: '#/components/schemas/Issue' post: operationId: createIssue tags: - Issues summary: Create an issue requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Issue' responses: '201': description: The created issue. content: application/json: schema: $ref: '#/components/schemas/Issue' /v1/issues/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getIssue tags: - Issues summary: Get an issue responses: '200': description: The requested issue. content: application/json: schema: $ref: '#/components/schemas/Issue' patch: operationId: updateIssue tags: - Issues summary: Update an issue requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Issue' responses: '200': description: The updated issue. content: application/json: schema: $ref: '#/components/schemas/Issue' /v1/webhooks: get: operationId: listWebhooks tags: - Webhooks summary: List webhooks responses: '200': description: A list of registered webhooks. content: application/json: schema: type: array items: $ref: '#/components/schemas/Webhook' post: operationId: createWebhook tags: - Webhooks summary: Create a webhook requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Webhook' responses: '201': description: The created webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook' /v1/webhooks/{id}: parameters: - $ref: '#/components/parameters/ResourceId' get: operationId: getWebhook tags: - Webhooks summary: Get a webhook responses: '200': description: The requested webhook. content: application/json: schema: $ref: '#/components/schemas/Webhook' delete: operationId: deleteWebhook tags: - Webhooks summary: Delete a webhook responses: '204': description: The webhook was deleted. components: securitySchemes: AuthorizationToken: type: apiKey in: header name: Authorization description: >- API key associated with a Fleetio user, prefixed with the word "Token" (e.g. "Authorization: Token YOUR_API_KEY"). Generate keys at https://secure.fleetio.com/api_keys. AccountToken: type: apiKey in: header name: Account-Token description: Account token identifying the Fleetio account. parameters: ResourceId: name: id in: path required: true description: The unique identifier of the resource. schema: type: integer format: int64 PerPage: name: per_page in: query required: false description: Number of records to return per page. schema: type: integer default: 50 maximum: 100 StartCursor: name: start_cursor in: query required: false description: Cursor for cursor-based pagination of list results. schema: type: string schemas: Vehicle: type: object properties: id: type: integer format: int64 readOnly: true account_id: type: integer format: int64 readOnly: true name: type: string vehicle_make: type: string vehicle_model: type: string vehicle_year: type: integer vin: type: string license_plate: type: string group_id: type: integer format: int64 vehicle_status_name: type: string vehicle_type_name: type: string primary_meter_value: type: number primary_meter_unit: type: string archived_at: type: string format: date-time nullable: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Contact: type: object properties: id: type: integer format: int64 readOnly: true account_id: type: integer format: int64 readOnly: true name: type: string first_name: type: string last_name: type: string email: type: string format: email group_id: type: integer format: int64 technician: type: boolean vehicle_operator: type: boolean employee: type: boolean license_number: type: string mobile_phone_number: type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true FuelEntry: type: object properties: id: type: integer format: int64 readOnly: true vehicle_id: type: integer format: int64 date: type: string format: date-time us_gallons: type: number cost: type: number price_per_volume_unit: type: number total_amount: type: number usage_in_mi: type: number meter_value: type: number is_full: type: boolean personal: type: boolean vendor_id: type: integer format: int64 nullable: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ServiceEntry: type: object properties: id: type: integer format: int64 readOnly: true vehicle_id: type: integer format: int64 completed_at: type: string format: date-time started_at: type: string format: date-time nullable: true meter_value: type: number total_amount: type: number labor_subtotal: type: number parts_subtotal: type: number vendor_id: type: integer format: int64 nullable: true is_sample: type: boolean created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ServiceReminder: type: object properties: id: type: integer format: int64 readOnly: true vehicle_id: type: integer format: int64 service_task_id: type: integer format: int64 service_task_name: type: string due_soon_threshold: type: number time_due_date: type: string format: date nullable: true meter_due_value: type: number nullable: true next_due_status: type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true WorkOrder: type: object properties: id: type: integer format: int64 readOnly: true number: type: string vehicle_id: type: integer format: int64 work_order_status_id: type: integer format: int64 work_order_status_name: type: string issued_at: type: string format: date-time nullable: true completed_at: type: string format: date-time nullable: true scheduled_at: type: string format: date-time nullable: true meter_value: type: number total_amount: type: number labor_subtotal: type: number parts_subtotal: type: number created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Part: type: object properties: id: type: integer format: int64 readOnly: true number: type: string description: type: string manufacturer_part_number: type: string upc: type: string unit_cost: type: number measurement_unit_name: type: string part_category_name: type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true InventoryJournalEntry: type: object properties: id: type: integer format: int64 readOnly: true part_id: type: integer format: int64 part_location_id: type: integer format: int64 nullable: true quantity: type: number unit_cost: type: number journal_type: type: string description: type: string performed_at: type: string format: date-time created_at: type: string format: date-time readOnly: true InspectionForm: type: object properties: id: type: integer format: int64 readOnly: true title: type: string description: type: string archived_at: type: string format: date-time nullable: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true SubmittedInspectionForm: type: object properties: id: type: integer format: int64 readOnly: true inspection_form_id: type: integer format: int64 vehicle_id: type: integer format: int64 submitted_at: type: string format: date-time contact_id: type: integer format: int64 nullable: true failed_items_count: type: integer passed: type: boolean created_at: type: string format: date-time readOnly: true Issue: type: object properties: id: type: integer format: int64 readOnly: true number: type: integer vehicle_id: type: integer format: int64 name: type: string description: type: string state: type: string description: Issue state, e.g. open, resolved, or closed. reported_at: type: string format: date-time resolved_at: type: string format: date-time nullable: true reported_by_id: type: integer format: int64 nullable: true assigned_contact_id: type: integer format: int64 nullable: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Webhook: type: object properties: id: type: integer format: int64 readOnly: true url: type: string format: uri description: The HTTPS endpoint that receives event payloads. event: type: string description: The event type the webhook subscribes to, e.g. vehicle.created. enabled: type: boolean created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true