---
title: "List Work Orders"
method: GET
path: "/work_orders"
tags: ["Work Orders"]
---

# List Work Orders

`GET /work_orders`

## Request

- Base URL: `https://secure.fleetio.com/api`
- URL: `https://secure.fleetio.com/api/work_orders`
- Auth: API key in header `Authorization` and API key in header `Account-Token`
- TypeScript: <https://skmtc.dev/fleetio/apis/fleetio-developer-api/docs/work_orders/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a list of work orders.

## Query parameters

- `start_cursor` string
- `per_page` integer
- `filter` object
  - `contact_id` EqFilter
    - `eq` string, required
  - `created_by_id` EqFilter
    - `eq` string, required
  - `issued_by_id` EqFilter
    - `eq` string, required
  - `vehicle_id` EqFilter
    - `eq` string, required
  - `vendor_id` EqFilter
    - `eq` string, required
  - `vmrs_repair_priority_class_id` EqFilter
    - `eq` string, required
  - `purchase_order_number` union
    - object
      - `like` string, required
    - object
      - `eq` string, required
  - `invoice_number` union
    - object
      - `like` string, required
    - object
      - `eq` string, required
  - `number` EqFilter
    - `eq` string, required
  - `labels` IncludeFilter
    - `include` string, required
  - `work_order_status_name` IncludeFilter
    - `include` string, required
  - `created_at` union
    - object
      - `lt` string, required
    - object
      - `lte` string, required
    - object
      - `gt` string, required
    - object
      - `gte` string, required
  - `updated_at` union
    - object
      - `lt` string, required
    - object
      - `lte` string, required
    - object
      - `gt` string, required
    - object
      - `gte` string, required
- `sort` object
  - `created_at` 'asc' | 'desc'
  - `updated_at` 'asc' | 'desc'
  - `id` 'asc' | 'desc'

## Response `200`

OK

- object
  - `start_cursor` string, nullable: The current start cursor of the records returned.
  - `next_cursor` string, nullable: The next cursor to retrieve the next page of records.
  - `per_page` integer: The maximum number of records returned.
  - `estimated_remaining_count` integer: The number of remaining records including the returned records, up to a maximum of 500.
  - `filtered_by` union[]: The filters applied to the returned record set.
    - union
      - object
        - `contact_id` EqFilter
          - `eq` string, required
      - object
        - `created_by_id` EqFilter
          - `eq` string, required
      - object
        - `issued_by_id` EqFilter
          - `eq` string, required
      - object
        - `vehicle_id` EqFilter
          - `eq` string, required
      - object
        - `vendor_id` EqFilter
          - `eq` string, required
      - object
        - `vmrs_repair_priority_class_id` EqFilter
          - `eq` string, required
      - object
        - `purchase_order_number` union
          - object
            - `like` string, required
          - object
            - `eq` string, required
      - object
        - `invoice_number` union
          - object
            - `like` string, required
          - object
            - `eq` string, required
      - object
        - `number` EqFilter
          - `eq` string, required
      - object
        - `labels` IncludeFilter
          - `include` string, required
      - object
        - `created_at` union
          - object
            - `lt` string, required
          - object
            - `lte` string, required
          - object
            - `gt` string, required
          - object
            - `gte` string, required
      - object
        - `updated_at` union
          - object
            - `lt` string, required
          - object
            - `lte` string, required
          - object
            - `gt` string, required
          - object
            - `gte` string, required
  - `sorted_by` union[]: The sorts applied to the returned record set.
    - union
      - object
        - `created_at` 'asc' | 'desc'
      - object
        - `updated_at` 'asc' | 'desc'
      - object
        - `id` 'asc' | 'desc'
  - `records` WorkOrderSummary[]
    - `vendor_id` integer, nullable, required
    - `id` integer, required
    - `number` string, required: The unique number of this Work Order.
    - `completed_at` string, date-time, nullable, required: The date and time at which the Work Order was completed.
    - `description` string, nullable, required: A description of this Work Order.
    - `ending_meter_same_as_start` boolean, required: Indicates whether or not the ending meter is the same as the starting meter.
    - `duration_in_seconds` integer, nullable, required: The number of seconds elapsed between beginning this Work Order and completing it.
    - `invoice_number` string, nullable, required: The number of the `Invoice` associated with this Work Order.
    - `created_by_id` integer, required: The id of the `User` who created this Work Order.
    - `state` 'active' | 'completed', required: Indicates whether this Work Order is currently active or has already been completed.
    - `issued_at` string, date-time, required: The date and time at which the Work Order was issued.
    - `issued_by_id` integer, nullable, required: The id of the issuer of this Work Order.
    - `contact_id` integer, nullable, required: The id of the `Contact` assigned to this Work Order.
    - `purchase_order_number` string, nullable, required: The purchase order number for this Work Order.
    - `scheduled_at` string, date-time, nullable, required: The date and time at which the Work Order was scheduled.
    - `started_at` string, date-time, nullable, required: The date and time at which the Work Order was started.
    - `expected_completed_at` string, date-time, nullable, required: The date and time at which the Work Order is expected to be completed.
    - `vehicle_id` integer, required: The id of the `Vehicle` associated with this Work Order.
    - `work_order_status_id` integer, required: The id of the `WorkOrderStatus` for this Work Order.
    - `work_order_status_color` string, nullable: The color of the `Work Order Status` for this Work Order.
    - `work_order_status_name` string, required: The name of the `Work Order Status` for this Work Order.
    - `documents_count` integer, required: The count of associated documents.
    - `images_count` integer, required: The count of the associated images.
    - `comments_count` integer, required: The count of associated comments.
    - `created_at` string, date-time, required: The date and time at which the Work Order was created.
    - `updated_at` string, date-time, required: The date and time at which the Work Order was last updated.
    - `labor_time_in_seconds` integer, nullable: The sum, in seconds, of the duration of all labor line items of a `completed` Work Order.
    - `attachment_permissions` AttachmentPermissions, nullable
      - `read_photos` boolean: Indicates whether the user has read permission for photos.
      - `manage_photos` boolean: Indicates whether the user has permission to manage (eg. upload, delete) photos.
      - `read_documents` boolean: Indicates whether the user has read permission for documents.
      - `manage_documents` boolean: Indicates whether the user has permission to manage (eg. upload, delete) documents.
    - `custom_fields` CustomFields, nullable: *Full details on working with Custom Fields [here](/docs/overview/custom-fields).
    - `contact` ContactMini, nullable, required: A Contact
      - `id` integer
      - `email` string, nullable: The Contact's email address.
      - `name` string, nullable: The Contact's full name.
      - `group_id` integer, nullable: If this Contact belongs to a [Group](/docs/api/groups), this will be the Fleetio ID of that `Group`.
      - `employee` boolean, nullable: Whether or not the Contact is an employee.
      - `employee_number` string, nullable: The employee number of the Contact.
      - `default_image_url` string, nullable: The URL of the Contact's default image/profile photo, if any.
    - `vehicle` VehicleMini, required: A Vehicle
      - `id` integer, required
      - `name` string, required: This vehicle's name.
      - `color` string, nullable: The color of this Vehicle.
      - `license_plate` string, nullable: The license plate number of this Vehicle.
      - `vin` string, nullable: The Vehicle Identification Number of this Vehicle.
      - `year` string, nullable: This Vehicle's model year.
      - `make` string, nullable: The name of this Vehicle's manufacturer.
      - `model` string, nullable: The name of the model of this Vehicle.
      - `trim` string, nullable: The trim level of this Vehicle.
      - `registration_expiration_month` integer, nullable: The month in which this Vehicle's registration expires.
      - `registration_state` string, nullable: The state, province, or territory in which this Vehicle is registered.
      - `default_image_url_small` string, nullable: The URL of a small-sized version of the default image for this Vehicle.
    - `vendor` VendorMini, nullable, required: A Vendor
      - `name` string, required: The name of the Vendor.
      - `phone` string, nullable, required: The phone number of the Vendor.
      - `city` string, nullable, required: The city of the Vendor.
      - `region` string, nullable, required: The region, state, province, or territory of the Vendor.
      - `postal_code` string, nullable, required: The postal code or ZIP code of the Vendor.
      - `country` string, nullable, required: The country of the Vendor.
      - `external_id` string, nullable, required: The external identifier of the Vendor.

## Other responses

- `400`: The format or parameters of the request was invalid
- `401`: Request could not be authenticated
- `500`: Something unexpected happened

## Changes

- **2026-11-06** `49558d744bd7`: 2 info
  - for the `query` request parameter `per_page`, the min was decreased from `2.00` to `1.00`
  - added the required property `records/items/vendor_id` to the response with the `200` status
- **2025-09-06** `6daa53a03224`: 3 breaking, 2 info
  - the response property `records/items/contact/default_image_url` became optional for the status `200`
  - the response property `records/items/contact/id` became optional for the status `200`
  - the response property `records/items/contact/name` became optional for the status `200`
  - added the optional property `records/items/contact/employee` to the response with the `200` status
  - …1 more

[Operation history](https://skmtc.dev/fleetio/apis/fleetio-developer-api/changes/work_orders/get.md)

---

[API](https://skmtc.dev/fleetio/apis/fleetio-developer-api.md) - [All operations](https://skmtc.dev/fleetio/apis/fleetio-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fleetio/apis/fleetio-developer-api/revisions/49558d744bd7?raw)
