Beta APIs

[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.

post/maintenance/estimates/batch

Request

  • Base URL
    https://api.samsara.com
  • Auth
    HTTP bearer

Query parameters

includeExternalIdsboolean

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.

requestIdstring uuid required

UUID identifying this batch request.

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.