---
title: "Quote Parse Config"
method: POST
path: "/api/v1/pipelines/quote"
tags: ["pipelines"]
---

# Quote Parse Config

`POST /api/v1/pipelines/quote`

Quote an AD-HOC convert config (no saved pipeline) — the authenticated
playground's run receipt (F1 of the config-panel work).

Prices the single-convert blueprint the playground config maps to through
the SAME machinery GET /{pipeline_id}/rate uses, so the quote carries the
team's real personal rates (plan, EU regional modifier, legacy convert
holds, per-team overrides) instead of the frontend's hand-synced
"standard rate" mirror. Response envelope == /rate
({rate_per_1000_pages_cents, rate_breakdown}) so the receipt consumes it
unchanged:

  - 2026-regime teams (everyone but the classic-pinned grandfathers) get
    the additive headline + the D7b ``line_items`` itemization — one
    "step" line for the convert base, one "addon" line per priced extra
    (track_changes framed as a convert ADD-ON, never a standalone quote —
    the framing law), and one "eval" line when ``eval`` is set
    (``eval_rubric_id`` is null: the flag prices the eval PASS, not a
    specific rubric). As on /rate, eval never moves the headline.
  - classic-pinned teams get the classic convert rate as the step line
    with NO ``line_items`` — mirroring /rate byte-for-byte, so the
    receipt falls back to its hedged mirror rates for add-ons.

Cheap by design (hence no extra rate limit — the router has none): no
pipeline row is read or written; the only DB reads are the team +
subscription lookups every /rate call already performs.

## Query parameters

- `processing_location` string, nullable — Optional residency region override (e.g. us, eu). When provided, use file_url or direct-upload; multipart uploads are rejected. When omitted, the request uses the team's configured residency and profile.

## Cookies

- `wos-session` string
- `datalab_active_team` string

## Request body

- QuoteParseConfigRequest — An AD-HOC convert config to price — the authenticated playground's run receipt (F1). No saved pipeline involved; this is the panel's current mode/extras/eval state, quoted at the team's real personal rates.
  - `mode` 'fast' | 'balanced' | 'accurate' — The EFFECTIVE convert mode. When Track Changes / Chart Understanding null the panel's mode picker, callers pass the remembered mode that still bills underneath.
  - `extras` string[] — Enabled priced extras, by billing key: track_changes, chart_understanding, infographic, word_bbox, table_cell_bboxes, list_item_bboxes.
  - `eval` boolean — Quote the eval pass too (a rubric is attached). Adds an 'eval' line item; never moves the headline rate (eval bills only when a run scores).

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/datalab/apis/datalab-api.md) · [All operations](https://skmtc.dev/datalab/apis/datalab-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/datalab/datalab-api/revisions/aa9f8ee18efb/schema)
