omega-extract

API reference

Stable v0.1. The /extract shape is locked; everything else may evolve up to v1.0.

Auth

API consumers authenticate with bearer tokens. Mint a token on the dashboard. The plaintext is shown once; we store only a SHA-256 hash. Lost tokens cannot be recovered, only revoked & replaced.

Authorization: Bearer omk_your-token-here

Pricing

Credit typeWhat 1 credit buysFree tier (signup)
LLM$0.001 of LLM cost (token-priced via the cascade router)5,000 ($5)
GPU1 second of GPU wall time (mineru / paddle parses)600 (10 min)

A typical 30-page slide-deck parse with chart-VLM costs ~3 LLM credits + ~30 GPU credits. A 64-page IC memo through the full pack pipeline costs ~780 LLM credits ($0.78). Top-ups land in v1 via Stripe.

Endpoints

POST /extract

Run an extraction pass on an uploaded PDF. multipart/form-data.

FieldTypeDefaultDescription
filefileThe PDF (required).
parserstringdoclingOne of docling, paddleocr_vl, mineru, mineru_remote.
enable_chart_vlmboolfalseRun the chart-VLM enhancer over figure regions.
chart_vlm_modelstring(profile default)Override the VLM model — e.g. openrouter/qwen/qwen3-vl-30b-a3b-instruct.

Example — parse a PDF with chart-VLM on a GPU host:

curl -X POST https://api.omega-extract.com/extract \
  -H "Authorization: Bearer omk_..." \
  -F "file=@uber-q1.pdf" \
  -F "parser=mineru_remote" \
  -F "enable_chart_vlm=true"

Response (200):

{
  "job_id": "9c1f…",
  "status": "done",
  "parser": "mineru_remote",
  "pages": 29,
  "blocks": 318,
  "tables": 12,
  "figures_described": 20,
  "llm_credits_charged": 4,
  "gpu_credits_charged": 75,
  "elapsed_parse_s": 75.3,
  "elapsed_vlm_s": 50.8,
  "result": { "pages": [ ... ] }
}

Errors:

CodeWhen
401Missing or invalid bearer token.
402Insufficient credits — top up.
400Unknown parser, bad PDF, missing field.
502Parse failed upstream (e.g. GPU unreachable).

GET /extract/jobs?limit=20

List your recent extraction jobs.

GET /credits/api

Bearer-auth balance check. Returns {"llm": int, "gpu": int}.

Frontend (session-cookie auth)

The dashboard at /dashboard talks to these via the session cookie:

Production checklist

Before opening this API to the internet, replace these v0 stubs: