Fleetio Contacts API

Manage people associated with the fleet - operators, technicians, and employees - with names, contact details, permissions, and group membership.

OpenAPI Specification

fleetio-openapi.yml Raw ↑
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