Skip to main content
Credits are the billing unit for Reducto API usage. This page explains how credits are calculated for each endpoint and document type.

Parse Endpoint

Documents and Images

Supported formats: PDF, DOCX, DOC, PPTX, PPT, PNG, JPEG, GIF, TIFF, HEIC, and more.
Processing TypeCredits/PageWhen Applied
Standard1Text, layout, simple tables, OCR
Complex2VLM-enhanced pages (complex tables, key-value regions, figures with summarization)
Agentic - Standard2Agentic mode enabled on simple pages
Agentic - Complex4Agentic mode enabled on complex pages
Advanced chart agent+4Per chart when advanced_chart_agent: true
Reducto automatically classifies page complexity. You don’t choose “standard” vs “complex”. Complexity is determined by the content.
What makes a page complex?
  • Tables with merged cells or nested headers
  • Key-value form regions
  • Figures when summarize_figures: true (default)

Spreadsheets

Supported formats: XLSX, XLS, CSV, XLSM
Clustering ModeCreditsDescription
Accurate (default)1 per 1,000 cellsIntelligent table detection
Fast1 per 5,000 cellsBasic clustering
Disabled1 per 5,000 cellsSingle table output

Text Files

Supported formats: HTML, TXT, RTF
FormatCredits/Page
Text formats0.5

Extract Endpoint

ModeCredits/PageNotes
Standard2Schema-based extraction
Agent-in-the-Loop2Beta pricing (may change)
If you pass a URL or file directly to Extract (instead of a jobid://), Parse credits are also charged. To avoid double-charging, parse first, then extract using the job ID.
# ❌ Charges for both Parse AND Extract
result = client.extract.run(
    input=upload.file_id,
    instructions={"schema": schema}
)

# ✅ Only charges for Extract (reuses parsed content)
parse_result = client.parse.run(input=upload.file_id)
result = client.extract.run(
    input=f"jobid://{parse_result.job_id}",
    instructions={"schema": schema}
)

Split Endpoint

ModeCredits/Page
Standard2
Same as Extract: passing a URL charges Parse + Split. Use jobid:// to avoid double-charging.

Edit Endpoint

ModeCredits/PageNotes
Beta4Subject to change

Pipeline Endpoint

Pipelines combine multiple operations. Credits are the sum of all operations in the pipeline:
Pipeline credits = Parse + Extract (if configured) + Split (if configured)

Credit Optimization Tips

1. Reuse Parse Results

Parse once, then run multiple Extract or Split calls using the job ID:
# Parse once
parse = client.parse.run(input=upload.file_id)

# Extract multiple schemas without re-parsing
invoice_data = client.extract.run(
    input=f"jobid://{parse.job_id}",
    instructions={"schema": invoice_schema}
)

vendor_data = client.extract.run(
    input=f"jobid://{parse.job_id}",
    instructions={"schema": vendor_schema}
)

2. Disable Agentic Mode When Not Needed

Agentic mode doubles credit usage. Only enable it for:
  • Handwritten content
  • Low-quality scans
  • Complex tables that parse incorrectly
# Standard parsing (1-2 credits/page)
result = client.parse.run(input=upload.file_id)

# Only enable agentic when needed (2-4 credits/page)
result = client.parse.run(
    input=upload.file_id,
    enhance={"agentic": [{"scope": "text"}]}
)

3. Use Page Ranges

Process only the pages you need:
# Only process pages 1-10
result = client.parse.run(
    input=upload.file_id,
    settings={"page_range": {"start": 1, "end": 10}}
)

4. Choose Appropriate Spreadsheet Clustering

For large spreadsheets where you don’t need intelligent table detection:
result = client.parse.run(
    input=upload.file_id,  # spreadsheet file
    spreadsheet={"clustering": "fast"}  # 5x cheaper than "accurate"
)

Monitoring Usage

Track your credit usage in Reducto Studio:
  • Usage dashboard: View credits consumed over time
  • Job logs: See credits charged per job
  • Usage alerts: Set threshold notifications
Each API response also includes credit information:
{
  "job_id": "abc123",
  "usage": {
    "num_pages": 10,
    "credits": 15.0
  }
}