[beta] Create a batch of maintenance estimates
Create 1–10 unapproved priced recommendations or vendor quotes in one request, limited to 3000000 raw JSON bytes. The batch is non-atomic: each create is independently authorized and validated, and successful writes remain committed when another item fails. Structural request errors return 400 before execution; exceeding the count or byte bound returns 413. Item business errors are returned in input order alongside successes, under HTTP 200. The rate limit applies to batch requests, not individual estimates. Approval, denial, award and attachments use their existing separate operations. Retry failed items only; reconcile ambiguous outcomes by stable external IDs through GET before retrying, because ordinary quote creation is not automatically replayed.
<b>Rate limit:</b> 100 requests/min (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
To use this endpoint, select Write 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.
Request
- Base URLhttps://api.samsara.com
- AuthHTTP bearer
Query parameters
Include estimate external identifiers. Defaults to false.
Request body
Example request
{
"estimates": [
{
"lineItems": [
{
"amount": {
"amount": "640.20",
"currency": "usd"
},
"description": "Expected repair cost"
}
],
"tax": {
"amount": "0.00",
"currency": "usd"
},
"vendorId": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"workOrderId": "464"
}
]
}Response
OK response.
Example response
{
"requestId": "672c7c45-1826-4162-8940-8ff9bd2a328b",
"responses": [
{
"data": {
"approvalSource": "none",
"approvalStatus": "unapproved",
"attachments": [
{
"createdAtTime": "2026-10-07T15:00:00Z",
"id": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"name": "repair-quote.pdf",
"processingStatus": "finished",
"updatedAtTime": "2026-10-07T15:00:00Z",
"url": "https://example.com/file",
"urlExpiresAt": "2026-10-07T15:00:00Z"
}
],
"createdAtTime": "2026-10-07T15:00:00Z",
"estimateType": "vendorQuote",
"externalIds": {
"repairSystem": "quote-123"
},
"externalRequest": {
"actionUrl": "https://example.com/requests/AI-563-1",
"externalRequestId": "AI-563-1",
"externalSystem": "Auto Integrate",
"message": "Review quote in Auto Integrate"
},
"id": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"lineItems": [
{
"amount": {
"amount": "640.2",
"currency": "usd"
},
"costType": "labor",
"description": "Replace turbocharger",
"id": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"quantity": 2,
"serviceTaskId": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"unitRate": {
"amount": "95.005",
"currency": "usd"
}
}
],
"notes": "Contact shop before starting work.",
"quotedAtTime": "2026-10-07T15:00:00Z",
"subtotal": {
"amount": "640.2",
"currency": "usd"
},
"supersededByEstimateId": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"supersedesEstimateId": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"tax": {
"amount": "640.2",
"currency": "usd"
},
"total": {
"amount": "640.2",
"currency": "usd"
},
"updatedAtTime": "2026-10-07T15:00:00Z",
"vendorId": "a81e26e6-50cd-4ae2-85b9-132c493c0871",
"version": 1,
"workOrderId": "464"
},
"message": "An open estimate already exists for this vendor and work order.",
"status": 200
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.