Codesota · APIOne endpoint · every task · three tiersIssue: April 22, 2026 · waitlist
§ 00 · The pitch

One endpoint. Every task.

Stop choosing between hundreds of models. Send one POST /v1/run with a task and a tier — sota, balanced, or cheap — and the router picks the model that wins the benchmark. The registry is the arbiter, not a vendor's marketing page.

§ 01 · Contract

One request, three possible answers.

The tier grammar is the same for every endpoint — /v1/ocr, /v1/tts, /v1/stt, /v1/translate — because the benchmark underneath is the arbiter. Pick a tier, get the current winner.


Param
{"tier": "sota" | "balanced" | "cheap"}
Default
balanced
Arbiter
the registry at /tasks
Tier spec
Applies to every /v1/<task> endpoint
TierWhat it picksCriterionCost profileExample (OCR)
sotaFrontier model for the taskhighest score on the canonical benchmarkhighest $/callGPT-5.4 · Gemini 2.5 Pro · Claude Opus 4.6
balancedBest quality-per-dollarcost-adjusted score across the benchmarkorder of magnitude cheaper than SOTAopen model on GPU cloud · hosted by us
cheapOSS self-hosted, amortisedfloor set by benchmark score, not vibeslowest $/call, latency variesPaddleOCR-VL-1.5 · dots.ocr · MonkeyOCR-pro
Fig 1 · Tier vocabulary is shared across this API and the smart router pitch at /roadmap. Nothing is model-hardcoded.
§ 02 · In the wild

Same endpoint, different tasks.

Six real tasks, six model picks the router makes today. The model name in the response is the current benchmark winner at that tier — not a hardcoded default.

Same endpoint · six tasks
Tap a task to switch the payload
Request.http
POST api.codesota.com/v1/run
 
{
"task": "extract text from invoice",
"tier": "cheap",
"input": <image>
}
Response · routedcheap
{
  "model": "PaddleOCR-VL-7B",
  "tier": "cheap",
  "cost": "$0.0006",
  "result": { ... }
}
 
// Routed via the benchmark registry
// Extract text, tables, and structure from any document
This call
$0.0006
Versus retail
$0.10 · GPT-5.4
Delta
167× cheaper
curl · /v1/ocr · live todayhardparse.com
curl -X POST https://hardparse.com/v1/ocr \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tier":"cheap","input":"<base64_pdf>"}'
python · /v1/ocrsota tier
import requests
 
r = requests.post(
  "https://hardparse.com/v1/ocr",
  headers={"Authorization": f"Bearer {token}"},
  json={"tier": "sota", "input": pdf_b64},
)
print(r.json()["result"])
§ 03
Rationale

Why a router, not another SDK.

There are hundreds of models across OCR, speech, vision, embeddings, translation, and text. Each has different strengths, pricing, and deployment needs. No product team has time to benchmark them all — and no vendor has an incentive to tell you when a competitor wins.

We already did the benchmarking. The registry at /tasks is public, versioned, and dated. This API turns that registry into automatic routing — so the model you call today is the model that wins the benchmark today, not the model you picked a year ago and forgot to revisit.

The full thesis is on /roadmap. This page is the product surface.

§ 04 · Waitlist

Get early access.

The API is building. /v1/ocr is live today at hardparse.com; the other endpoints are in design partnership. Leave your address and we'll reach out before each tier opens.

We'll send a confirmation email. No spam.

Elsewhere
Door 01

Read the thesis

Why a router, and why now. The three-tier contract, the OCR proof, and the commodity argument — all on /roadmap.

Open /roadmap →
Door 02

Try the playground

Interactive demo: pick a task, watch the router select a model, compare costs side by side. Live at /api-demo.

Open /api-demo →
Door 03

Browse the registry

Every benchmark the router quotes is public. OCR, ASR, MTEB, detection, retrieval — the arbiter under the API.

Open /tasks →