---
title: "Stream work orders."
method: GET
path: "/maintenance/work-orders/stream"
tags: ["Work Orders"]
---

# Stream work orders.

`GET /maintenance/work-orders/stream`

## Request

- Base URL: `https://api.samsara.com`
- URL: `https://api.samsara.com/maintenance/work-orders/stream`
- Auth: HTTP bearer

Stream work orders.

 <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).

To use this endpoint, select **Read Work Orders** under the Work Orders category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
 

 **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.

## Query parameters

- `after` string
- `startTime` string, required
- `endTime` string
- `workOrderStatuses` string[]
- `assetIds` string[]
- `assignedUserIds` string[]
- `includeExternalIds` boolean
- `includeAttributes` boolean

## Response `200`

OK response.

- WorkOrdersStreamWorkOrdersResponseBody
  - `data` WorkOrderWithTimeEntriesObjectResponseBody[], required: Work Orders
    - `archivedAtTime` string, date-time: The time the work order was archived in RFC 3339 format.
    - `assetId` string, required: The ID of the asset.
    - `assignedUserId` string: The ID of the assigned mechanic.
    - `assignees` WorkOrderAssigneeObjectResponseBody[]: Dashboard users assigned to the work order. Only returned for organizations with multiple work order assignees enabled. Technicians backed only by a driver are not represented.
      - `userId` string, required: Samsara dashboard user ID of the assigned technician. Joinable against the public users API.
    - `attachments` WorkOrderAttachmentObjectResponseBody[]: Files attached to the work order.
      - `id` string, required: ID of the media record.
      - `processingStatus` 'unknown' | 'processing' | 'finished', required: Status of the media record. Valid values: `unknown`, `processing`, `finished`
      - `url` string, uri: URL containing a link to associated media content. Included if 'processingStatus' is 'finished'.
      - `urlExpiresAt` string, date-time: Expiration time of the media record 'url'. UTC timestamp in RFC 3339 format.
    - `attributes` GoaAttributeTinyResponseBody[]: Custom fields (attributes) set on the work order. Returned by the work order endpoints when includeAttributes is true, and in work order webhook and stream payloads when work order attributes are enabled for the organization.
      - `dateValues` string[]: List of date values associated with the attribute (RFC 3339 full-date format: YYYY-MM-DD).
      - `id` string: Id of the attribute
      - `name` string: Name of the attribute
      - `numberValues` number[]: List of number values associated with the attribute
      - `stringValues` string[]: List of string values associated with the attribute.
    - `category` string: The category of the work order
    - `closingNotes` string: Notes on the work order.
    - `completedAtTime` string, date-time: The time the work order was completed in RFC 3339 format.
    - `createdAtTime` string, date-time, required: The time the work order was created in RFC 3339 format.
    - `createdByUserId` string: The ID of the creator of the work order. On create, integrations may optionally set this to attribute Created-by UI and creator notifications to a dashboard user; the activity log still records the API token owner as the create actor when that override is used.
    - `description` string: A description of what needs to be fixed.
    - `discount` WorkOrderDiscountObjectResponseBody: How much a work order is discounted. Either money or basisPoints are specified.
      - `basisPoints` integer: The discount in basis points. 100 basis points = 1%.
      - `money` WorkOrderMoneyObjectResponseBody: A specified amount of money.
        - `amount` string, required: Amount of the currency.
        - `currency` 'usd', required: Type of the currency. We currently only support usd. Valid values: `usd`
    - `dueAtTime` string, date-time: The due date of the work order in RFC 3339 format.
    - `engineHours` integer: The engine hours at the time of the work order.
    - `externalId` string: Identifier for this work order in a third-party system, as set when the work order was imported (for example a Fleetio or Eptura work order ID). Returned by the work order endpoints when the request sets `includeExternalIds=true`, and in work order webhook payloads, when the work order has an external ID. Use it to match imported work orders to their source records, for example before attaching files with POST /maintenance/work-orders/attachments. Only returned for organizations with this field enabled.
    - `id` string, required: The unique id of the work order.
    - `invoiceNumber` string: The invoice number for the work order.
    - `items` WorkOrderItemObjectResponseBody[]: Items related to the work order.
      - `id` string, required: ID of the item.
      - `type` 'DVIR' | 'FAULT' | 'FORM' | 'ISSUE' | 'ITEM_TYPE_UNSPECIFIED' | 'MAINTENANCE_PREDICTION_EVENT' | 'SCHEDULED_MAINTENANCE', required: The type of item. Valid values: `DVIR`, `FAULT`, `FORM`, `ISSUE`, `ITEM_TYPE_UNSPECIFIED`, `MAINTENANCE_PREDICTION_EVENT`, `SCHEDULED_MAINTENANCE`
    - `maintenanceSite` WorkOrderMaintenanceSiteObjectResponseBody: The maintenance site (inventory location) where the work is performed.
      - `name` string: Display name of the maintenance site.
      - `placeExternalIds` object: External identifiers for the linked Place. Populated only when the request sets `includeExternalIds=true`.
      - `placeId` string: ID of the Place linked to this maintenance site. Joinable against the Places API. Omitted if the maintenance site is not linked to a place.
    - `odometerMeters` integer: The odometer reading at the time of the work order.
    - `poNumber` string: The purchase order number for the work order.
    - `priority` 'High' | 'Low' | 'Medium' | 'Urgent': The priority of the work order Valid values: `High`, `Low`, `Medium`, `Urgent`
    - `serviceTaskInstances` ServiceTaskInstanceWithTimeEntriesObjectResponseBody[]: Service Tasks for the work order.
      - `assignees` ServiceTaskAssigneeObjectResponseBody[]: Dashboard users assigned to the service task. Only returned for organizations with service task assignees enabled. Technicians backed only by a driver are not represented.
        - `userId` string, required: Samsara dashboard user ID of the assigned technician. Joinable against the public users API.
      - `id` string, required: ID of the service task instance.
      - `laborHourlyCost` WorkOrderMoneyObjectResponseBody: A specified amount of money.
        - `amount` string, required: Amount of the currency.
        - `currency` 'usd', required: Type of the currency. We currently only support usd. Valid values: `usd`
      - `laborTimeMinutes` integer: The time of labor needed
      - `notes` string: Free-form technician notes for the service task.
      - `parts` PartInstanceObjectResponseBody[]: Parts for the service task.
        - `costCentsOverride` integer: The cost of one unit of the part in cents. If not provided, the part defined cost will be used.
        - `id` string, required: ID of the part instance.
        - `partId` string, required: ID of the part definition.
        - `quantity` number, double, required: The quantity of the part in the parts pre defined unit of measure.
      - `partsCost` WorkOrderMoneyObjectResponseBody: A specified amount of money.
        - `amount` string, required: Amount of the currency.
        - `currency` 'usd', required: Type of the currency. We currently only support usd. Valid values: `usd`
      - `serviceTaskId` string, required: ID of the service task.
      - `status` 'Unknown' | 'Open' | 'In Progress' | 'On Hold' | 'Completed', required: The status of the service task. Valid values: `Unknown`, `Open`, `In Progress`, `On Hold`, `Completed`
      - `subtasks` ServiceTaskSubtaskObjectResponseBody[]: Subtasks for the service task.
        - `form` ServiceTaskFormSubtaskObjectResponseBody: A form subtask.
          - `formSubmissionUuid` string, required: The UUID of the form submission.
        - `procedure` ServiceTaskProcedureSubtaskObjectResponseBody: A procedure subtask.
          - `isCompleted` boolean, required: Whether the procedure is complete.
          - `name` string, required: The name of the procedure.
      - `timeEntries` WorkOrderTimeEntryObjectResponseBody[]: Technician time entries logged against this service task. Only returned for organizations using Technician Management. Includes both completed entries (clockOutAtTime is set) and entries that are still open (clockOutAtTime is null).
        - `clockInAtTime` string, date-time, required: Time the technician clocked in to this service task in RFC 3339 (UTC) format.
        - `clockOutAtTime` string, date-time: Time the technician clocked out of this service task in RFC 3339 (UTC) format. Null if the technician is still clocked in.
        - `driverId` string: Samsara driver ID linked to the technician who performed the work. Set when the technician has a linked driver. Joinable against the public drivers API.
        - `userId` string: Samsara dashboard user ID linked to the technician who performed the work. Set when the technician has a linked dashboard user. Joinable against the public users API.
    - `startedAtTime` string, date-time: The time work started on the work order, in RFC 3339 format.
    - `status` 'Assigned' | 'Awaiting estimate approval' | 'Awaiting estimates' | 'Cancelled' | 'Closed' | 'Completed' | 'Estimate' | 'Estimate approval denied' | 'Estimate approved' | 'Estimates ready' | 'In Progress' | 'Needs Vendor Selection' | 'On Hold' | 'Open' | 'Pending Approval' | 'Pending Parts' | 'Planning', required: The status of the work order, including system-managed estimate workflow statuses. Valid values: `Assigned`, `Awaiting estimate approval`, `Awaiting estimates`, `Cancelled`, `Closed`, `Completed`, `Estimate`, `Estimate approval denied`, `Estimate approved`, `Estimates ready`, `In Progress`, `Needs Vendor Selection`, `On Hold`, `Open`, `Pending Approval`, `Pending Parts`, `Planning`
    - `tax` WorkOrderTaxObjectResponseBody: How much tax is applied to a work order. Either money or basisPoints are specified.
      - `basisPoints` integer: The tax in basis points. 100 basis points = 1%.
      - `money` WorkOrderMoneyObjectResponseBody: A specified amount of money.
        - `amount` string, required: Amount of the currency.
        - `currency` 'usd', required: Type of the currency. We currently only support usd. Valid values: `usd`
    - `unallocatedLabor` WorkOrderUnallocatedLaborObjectResponseBody: Unallocated labor from time entries not associated with any service task.
      - `cost` WorkOrderMoneyObjectResponseBody, required: A specified amount of money.
        - `amount` string, required: Amount of the currency.
        - `currency` 'usd', required: Type of the currency. We currently only support usd. Valid values: `usd`
      - `timeMinutes` integer, required: The total unallocated labor time in minutes.
    - `updatedAtTime` string, date-time, required: The time the work order was last updated in RFC 3339 format.
    - `vendorUuid` string: The vendor location UUID for the work order. Resolve the location via GET /fleet/maintenance/vendor-locations.
    - `workOrderTemplateIds` string[]: IDs of the work order template(s) this work order was created from. May include templates that have since been deleted.
  - `pagination` GoaPaginationResponseResponseBody, required: Pagination parameters.
    - `endCursor` string, required: Cursor identifier representing the last element in the response. This value should be used in conjunction with a subsequent request's 'after' query parameter. This may be an empty string if there are no more pages left to view.
    - `hasNextPage` boolean, required: True if there are more pages of results immediately available after this endCursor.

## Other responses

- `401`: Unauthorized response.
- `404`: Not Found response.
- `405`: Method Not Allowed response.
- `413`: Content Too Large response.
- `429`: Too Many Requests response.
- `500`: Internal Server Error response.
- `501`: Not Implemented response.
- `502`: Bad Gateway response.
- `503`: Service Unavailable response.
- `504`: Gateway Timeout response.
- `default`: Bad Request response.

---

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