CodeSOTA API — One Endpoint, Best Model, Any Task

3 min read Original article ↗

Codesota · APIOne endpoint · every task · three tiersIssue: April 22, 2026 · waitlist

§ 00 · The pitch

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.

Live now: GET /api/sota/{task} — the registry as JSON, free, CORS-open, no auth, no inference markup. The router pitched here is built on top of it. Read the schema →

§ 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

§ 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",

}

//

Routed via the benchmark registry

//

Extract text, tables, and structure from any document

Versus retail

$0.10 · GPT-5.4

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"])

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.

Elsewhere

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 →

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 →

Browse the registry

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

Open /tasks →