---
title: "Estimate Cost"
method: POST
path: "/v1/organizations/billing/estimate"
tags: ["Organization Billing"]
---

# Estimate Cost

`POST /v1/organizations/billing/estimate`

## Request

- Base URL: `https://api.mixpeek.com`
- URL: `https://api.mixpeek.com/v1/organizations/billing/estimate`
- Auth: HTTP bearer

Quote the v2 cost of planned ingestion before submitting it.

Forgiving by design: unknown MIME types quote at the cheapest band;
wrong unit fields and inapplicable features return teaching errors.

## Request body

- EstimateRequest
  - `items` EstimateItem[], required: Planned content to ingest
    - `mime_type` string, required: MIME type (or registry input type) of the planned content
    - `count` number, nullable: Unit count (images, web pages)
    - `minutes` number, nullable: Duration (video/audio)
    - `pages` number, nullable: Page count (documents)
    - `tokens` number, nullable: Token count (text)
    - `units` number, nullable: Generic unit count (accepted for any modality)
  - `features` string[]: Feature keys to apply (see GET /v1/collections/features)
  - `full_res` boolean: Opt out of mezzanine normalization (2x multiplier)

## Response `200`

Successful Response

- EstimateResponse
  - `pricing_model` string
  - `placeholder_rates` boolean, required: True until the rate card locks — quote is provisional
  - `line_items` object[], required
  - `total_usd` number, required
  - `batch_minimum_applied` boolean, required
  - `allowance_pool_usd` number, nullable: The tier's monthly usage pool, if any
  - `allowance_covered_usd` number, required: How much of this estimate falls inside the remaining pool (directional pre-cutover: the pool is not drawn down yet)
  - `estimated_overage_usd` number, required: Overage beyond the pool, NET of any plan-level overage discount — matches what the invoice will charge
  - `overage_discount_pct` number: Plan-level overage discount applied (Scale 20%); 0 when the plan has none
  - `overage_discount_usd` number: Dollar amount the overage discount saved this estimate

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-10-09** `61a175e8eb9a`: 1 warning, 5 info
  - removed the optional property `detail` from the response with the `422` status
  - added the non-success response with the status `429`
  - added the non-success response with the status `503`
  - added the optional property `success` to the response with the `422` status
  - …2 more
- **2026-08-09** `5d4c905106b4`: 1 info
  - the endpoint scheme security `BearerAuth` was added to the API
- **2026-07-26** `7cb051533311`: 2 info
  - added the optional property `overage_discount_pct` to the response with the `200` status
  - added the optional property `overage_discount_usd` to the response with the `200` status

[Operation history](https://skmtc.dev/mixpeek/apis/mixpeek-api/changes/v1/organizations/billing/estimate/post.md)

---

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