Cost reporting

Per-document and per-stage cost, in exact USD.

Documents processed by the universal extraction pipeline carry cost fields.

FieldTypeDescription
total_cost_usdnumber | nullExact billed cost in USD. null for documents handled by the legacy per-type pipelines (bank_statement, audited_financial_statement, general_information_sheet).
cost_reportobject | nullPer-stage breakdown. null for legacy-pipeline documents.
{
  "total_cost_usd": 0.001234,
  "cost_report": {
    "stages": {
      "stage1_universal": { "model": "qwen/qwen3-vl-32b-instruct", "calls": 3, "input_tokens": 4500, "output_tokens": 600, "cost_usd": 0.0008 },
      "stage3_dedup": { "model": "anthropic/claude-sonnet-4.6", "calls": 1, "input_tokens": 5800, "output_tokens": 900, "cost_usd": 0.0024 }
    },
    "reducto": { "calls": 0, "price_per_page_usd": 0.015, "cost_usd_estimated": 0.0 },
    "total_cost_usd": 0.0032,
    "note": "OpenRouter costs are exact (usage.cost). Reducto is estimated."
  }
}

Model cost values come directly from OpenRouter's usage.cost field, so they are the exact USD billed. Reducto OCR is estimated at $0.015 × pages OCRed. The total_cost_usd on batch_jobs is the sum across documents in the batch.