---
title: "[beta] List maintenance estimates"
method: GET
path: "/maintenance/estimates"
tags: ["Beta APIs"]
---

# \[beta\] List maintenance estimates

`GET /maintenance/estimates`

## Request

- Base URL: `https://api.samsara.com`
- URL: `https://api.samsara.com/maintenance/estimates`
- Auth: HTTP bearer

Read estimates by IDs or work orders, including historical decisions. One primary selector is required. Up to 100 estimate IDs, 10 WO IDs and 10 vendor IDs bound query and authorization work. Filters use OR within each set and AND across sets.

 <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

- `ids` string[]
- `workOrderIds` string[]
- `vendorIds` string[]
- `after` string
- `includeExternalIds` boolean

## Response `200`

OK response.

- MaintenanceEstimatesListMaintenanceEstimatesResponseBody
  - `data` MaintenanceEstimateObjectResponseBody[], required: Matching estimate records.
    - `approvalSource` 'unknown' | 'none' | 'policy' | 'samsara', required: Authority for the current approval state. Defaults to none. Valid values: `unknown`, `none`, `policy`, `samsara`
    - `approvalStatus` 'unknown' | 'unapproved' | 'pending' | 'approved' | 'denied' | 'cancelled', required: Approval state. Vendor quotes default to unapproved; expectedCost recommendations report unknown until conversion, or cancelled after cancellation. Approval and award are separate operations. Valid values: `unknown`, `unapproved`, `pending`, `approved`, `denied`, `cancelled`
    - `attachments` MaintenanceEstimateAttachmentResponseBody[], required: Quote documents. API additions enforce a 50-file WO admission limit against observed files and pending API reservations.
      - `createdAtTime` string, date-time, required: Time the attachment was created.
      - `id` string, required: Stable attachment ID.
      - `name` string, required: Original or generated filename.
      - `processingStatus` 'unknown' | 'processing' | 'finished', required: Attachment availability. Defaults to processing until a validated download is available; unknown when availability cannot be determined. Valid values: `unknown`, `processing`, `finished`
      - `updatedAtTime` string, date-time, required: Latest attachment change; initially equal to creation time.
      - `url` string, uri: Temporary download URL; present only when processingStatus is finished.
      - `urlExpiresAt` string, date-time: Expiration of the temporary download URL; present only with url.
    - `createdAtTime` string, date-time, required: Server creation time.
    - `estimateType` 'unknown' | 'expectedCost' | 'vendorQuote', required: Whether this estimate is a recommendation or a vendor quote. Omitted create values default to vendorQuote. Unknown represents an unrecognized type. Valid values: `unknown`, `expectedCost`, `vendorQuote`
    - `externalIds` object: Estimate external identifiers. Responses include these only when includeExternalIds=true; default omitted.
    - `externalRequest` MaintenanceEstimateExternalRequestResponseBody: Provider request details. This metadata does not create a request or change approval or award status.
      - `actionUrl` string, uri: HTTPS provider URL without embedded credentials; at most 2048 bytes.
      - `externalRequestId` string: Provider request reference, not an estimate lookup alias or idempotency key; at most 200 characters.
      - `externalSystem` string: External provider name; at most 100 characters.
      - `message` string: Optional display message; at most 500 characters.
    - `id` string, required: Stable estimate ID.
    - `isAwarded` boolean, required: Whether this exact vendor quote has been awarded for the WO. Defaults to false; recommendation selection and approval do not award.
    - `lineItems` MaintenanceEstimateLineItemResponseBody[], required: Up to 200 priced lines; incomplete dashboard quotes may have no lines.
      - `amount` MaintenanceEstimateMoneyResponseBody, required: Nonnegative amount in the organization's currency. Supported currencies: usd, gbp, cad, eur, chf, mxn. Exact decimal strings are required.
        - `amount` string, required: The money amount.
        - `currency` 'usd' | 'gbp' | 'cad' | 'eur' | 'chf' | 'mxn', required: The currency of money. This is a 3-letter ISO 4217 currency code. Valid values: `usd`, `gbp`, `cad`, `eur`, `chf`, `mxn`
      - `costType` 'unknown' | 'labor' | 'parts': Whether the entire line is labor or parts. Omitted when classification is absent or mixed; unknown represents an unrecognized classification. No classification is inferred from description. Valid values: `unknown`, `labor`, `parts`
      - `description` string: Vendor quote text; retained even when serviceTaskId is supplied. Maximum 2000 Unicode characters.
      - `id` string, required: Server-generated line ID.
      - `quantity` number: Quantity or labor hours, greater than zero with at most two fractional digits. When supplied, unitRate is also required. Omitted when actual quantity is unknown.
      - `serviceTaskId` string: Associated WO service-task instance ID; not a task catalog ID.
      - `unitRate` MaintenanceEstimateUnitRateResponseBody: Price per quantity unit in the organization's currency. Rates can include fractional cents; round the extended line amount once to cents.
        - `amount` string, required: Nonnegative decimal unit price, with up to six fractional digits. Signs, exponents and grouping separators are not accepted.
        - `currency` 'usd' | 'gbp' | 'cad' | 'eur' | 'chf' | 'mxn', required: Three-letter ISO 4217 currency code. Must match the organization's current currency and the line amount. Valid values: `usd`, `gbp`, `cad`, `eur`, `chf`, `mxn`
    - `notes` string: Additional notes, at most 4000 Unicode characters.
    - `quotedAtTime` string, date-time: Actual instant the vendor issued the quote; omit when only a date is known.
    - `subtotal` MaintenanceEstimateMoneyResponseBody: Nonnegative amount in the organization's currency. Supported currencies: usd, gbp, cad, eur, chf, mxn. Exact decimal strings are required.
      - `amount` string, required: The money amount.
      - `currency` 'usd' | 'gbp' | 'cad' | 'eur' | 'chf' | 'mxn', required: The currency of money. This is a 3-letter ISO 4217 currency code. Valid values: `usd`, `gbp`, `cad`, `eur`, `chf`, `mxn`
    - `supersededByEstimateId` string: Successor estimate; a superseded quote is historical.
    - `supersedesEstimateId` string: Previous denied estimate replaced by this new quote.
    - `tax` MaintenanceEstimateMoneyResponseBody: Nonnegative amount in the organization's currency. Supported currencies: usd, gbp, cad, eur, chf, mxn. Exact decimal strings are required.
      - `amount` string, required: The money amount.
      - `currency` 'usd' | 'gbp' | 'cad' | 'eur' | 'chf' | 'mxn', required: The currency of money. This is a 3-letter ISO 4217 currency code. Valid values: `usd`, `gbp`, `cad`, `eur`, `chf`, `mxn`
    - `total` MaintenanceEstimateMoneyResponseBody: Nonnegative amount in the organization's currency. Supported currencies: usd, gbp, cad, eur, chf, mxn. Exact decimal strings are required.
      - `amount` string, required: The money amount.
      - `currency` 'usd' | 'gbp' | 'cad' | 'eur' | 'chf' | 'mxn', required: The currency of money. This is a 3-letter ISO 4217 currency code. Valid values: `usd`, `gbp`, `cad`, `eur`, `chf`, `mxn`
    - `updatedAtTime` string, date-time, required: Latest public content or lifecycle change.
    - `vendorId` string: Vendor location ID. Resolve the location via GET /fleet/maintenance/vendor-locations.
    - `version` integer, required: Monotonic change counter including lifecycle and attachment updates.
    - `workOrderId` string, required: Owning numeric work order ID.
  - `pagination` MaintenanceEstimatesPaginationResponseBody, required: Cursor pagination.
    - `endCursor` string, required: Continuation cursor; empty when a finite result is exhausted.
    - `hasNextPage` boolean, required: Whether the request has another page. Defaults to false at the end of a finite collection.

## 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)
