---
title: "POST /v1/estimates"
method: POST
path: "/v1/estimates"
tags: ["Conversion"]
---

# POST /v1/estimates

`POST /v1/estimates`

## Request

- Base URL: `https://markovo.net`
- URL: `https://markovo.net/v1/estimates`
- Auth: one of:
  - HTTP bearer
  - none

## Response `201`

Bounded estimate

- Estimate
  - `upload_id` string, required
  - `job_token` string: Anonymous estimate ownership token. Keep it private; URL guest previews submit it with upload_id to POST /v1/guest-preview-sessions.
  - `capability_id` string
  - `filename` string
  - `source_units_estimated` integer
  - `source_kind` 'youtube_audio'
  - `duration_ms` integer: Present for YouTube audio estimates; billing uses decoded duration.
  - `expires_at` string, date-time
  - `credit_scale` unknown, required
  - `credit_model_version` string, required
  - `rate_card_version` string, required
  - `estimated_credit_units` integer, required
  - `estimated_credits` number
  - `layout_fidelity` 'standard' | 'formula'
  - `formula_detection` object: Present when formula enhancement was requested but local preflight found no formula region. The estimate automatically uses standard conversion and adds no formula charge.
    - `requested` unknown, required
    - `applied` unknown, required
    - `reason` 'no_formula_regions', required
    - `additional_credit_units` unknown, required
  - `formula_candidate_pages` integer[]
  - `formula_regions` object[]: Regions detected during unpaid formula preflight; the estimate shows the region count and maximum price before conversion.
    - `region_id` string, required
    - `page_index` integer, required
    - `bbox` number[], required
  - `external_processing` object: When required, only the detected formula region is transferred to a third-party service; the scope is disclosed before conversion.
    - `required` boolean
    - `transfer_scope` string
  - `page_ranges` string: Normalized page selection echoed for pdf-to-markdown when the request included pages, e.g. "1-3,5,8-12".
  - `pages_selected` integer: Number of source pages the estimate prices when a page selection applies.
  - `source_pages_total` integer: Real document page count a page selection was validated against.
  - `billing_metrics` object

## Other responses

- `400`: Machine-readable safe error
- `413`: Machine-readable safe error
- `422`: Machine-readable safe error

---

[API](https://skmtc.dev/markovo/apis/markovo-conversion-api.md) · [All operations](https://skmtc.dev/markovo/apis/markovo-conversion-api/llms.txt) · [OpenAPI document](https://skmtc.dev/markovo/apis/markovo-conversion-api/revisions/e080e7b85e2e?raw)
