---
title: "Estimate savings for an uploaded billing file"
method: POST
path: "/v1/org/{org_id}/savings-estimate"
tags: ["Savings Estimate"]
---

# Estimate savings for an uploaded billing file

`POST /v1/org/{org_id}/savings-estimate`

## Request

- Base URL: `https://api.archera.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.archera.ai/v1/org/{org_id}/savings-estimate`
- Auth: none declared

Parses supported billing formats synchronously (200), and queues LLM fallback otherwise (202). Poll queued estimates until status is complete or error. If the latest estimate for this upload has not failed, it is returned (200).

## Request body

- SavingsEstimateRequest
  - `upload_id` string, uuid, required

## Response `200`

OK

- SavingsEstimate
  - `id` string, uuid, required
  - `status` 'queued' | 'processing' | 'complete' | 'error', required
  - `error` string, nullable
  - `upload_id` string, uuid, required
  - `result` SavingsEstimateDetail
    - `provider` 'aws' | 'azure' | 'gcp' | 'null', nullable, required
    - `source_format` string, required
    - `period_start` string, date, nullable, required
    - `period_end` string, date, nullable, required
    - `account_id` string, nullable, required
    - `currency` string, required
    - `is_projected` boolean, required
    - `extraction_status` 'complete' | 'partial' | 'unverified', required
    - `line_items` CostLineItem[], required
      - `service` string, required
      - `reservable_service` string, nullable, required
      - `service_code` string, nullable
      - `resource_type` string, nullable, required
      - `usage_quantity` ValueRange, required
        - `estimate` number, required
        - `lower_bound` number, nullable, required
        - `upper_bound` number, nullable, required
      - `usage_unit` string, nullable, required
      - `cost` ValueRange, required
        - `estimate` number, required
        - `lower_bound` number, nullable, required
        - `upper_bound` number, nullable, required
      - `region` string, nullable, required
      - `spend_type` 'on_demand' | 'reserved' | 'unreservable' | 'unknown', required
      - `savings_estimate` ValueRange, required
        - `estimate` number, required
        - `lower_bound` number, nullable, required
        - `upper_bound` number, nullable, required
    - `total_cost` ValueRange, required
      - `estimate` number, required
      - `lower_bound` number, nullable, required
      - `upper_bound` number, nullable, required
    - `total_savings_estimate` ValueRange, required
      - `estimate` number, required
      - `lower_bound` number, nullable, required
      - `upper_bound` number, nullable, required

## Other responses

- `202`: Accepted
- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `405`: Method not allowed
- `409`: Conflict
- `422`: Unprocessable Content
- `500`: Internal server error
- `default`: Default error response

## Changes

- **2026-10-13** `8b1de9447803`: 31 info
  - added the optional property `status` to the response with the `400` status
  - added the optional property `status` to the response with the `401` status
  - added the optional property `status` to the response with the `403` status
  - added the optional property `status` to the response with the `404` status
  - …27 more
- **2026-09-18** `e80110f9971f`: 1 info
  - added the success response with the status `200`
- **2026-09-14** `4cdea6007b8c`: 1 info
  - added the optional property `result/anyOf[#/components/schemas/SavingsEstimateDetail]/line_items/items/service_code` to the response with the `202` status
- **2026-09-12** `398a45ead493`: 1 info
  - added the required property `upload_id` to the response with the `202` status
- **2026-08-21** `e370017a9862`: 1 breaking, 1 info
  - removed the success response with the status `200`
  - added the success response with the status `202`

[Operation history](https://skmtc.dev/archera/apis/archera-ai-api/changes/v1/org/:org_id/savings-estimate/post.md)

---

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