The API
Every read endpoint on this site is backed by a single public REST API, and it's meant to be called directly — this is the same API the web frontend and the goesb runner CLI both use, nothing held back for internal-only access. Full request/response shapes for every endpoint are published as an OpenAPI 3 spec, browsable and testable right in your browser.
Interactive docs
Auto-generated from the API's own code, so it can never drift from what the API actually does.
- /api/docs — Swagger UI. Every endpoint, every parameter, and a "Try it out" button that fires real requests.
- /api/redoc — ReDoc. Same spec, a read-optimized single-page layout — better for skimming than testing.
- /api/openapi.json — the raw OpenAPI 3 spec. Feed it to a code generator (openapi-generator, orval, ...) for a typed client in your language of choice.
Base URL
Every path above and below is relative to /api on this domain. No API key is required for any read endpoint.
curl "https://www.goesb.com/api/leaderboards?benchmark_type=batch&language=nl-NL&limit=5"Endpoint groups
One line each — see the interactive docs above for every parameter, response field, and error shape.
| Group | Endpoint | What it does |
|---|---|---|
| leaderboards | GET /leaderboards | Every verified result, filterable and sortable (FR-7.1) — the data behind every leaderboard view. |
| answers | GET /answers | The decision-tool endpoint — best verified match for a set of constraints, deterministic and never editorial. |
| profiles | GET /profiles | Official, versioned benchmark profiles (what gets run). |
| packs | GET /packs | Benchmark datasets (what gets transcribed). |
| hardware | GET /hardware | Curated catalog, plus which hardware real results were actually run on. |
| benchmarks | POST /benchmark | Submit a signed result — requires a signing token from /runner-tokens first. |
| requests | GET / POST /requests | The public "most-wanted benchmarks" board. |
| tokens | POST /runner-tokens | Issue a short-lived, single-use signing token (required before submitting). |
Reading vs. submitting
- Reading is fully open. No API key, no auth header, no rate limit beyond ordinary abuse protection — every leaderboard, answer, profile, pack, and hardware endpoint is a plain unauthenticated
GET. - Submitting is signed, not open.
POST /benchmarkonly accepts a result whose signature verifies against a short-lived, single-use token fromPOST /runner-tokens— a caller-generated Ed25519 keypair, never a shared API key, and the private half never leaves the caller's machine. This is exactly whatgoesb submitalready does for you; hand-rolling a submission means reproducing that flow yourself. Both token issuance and result submission also re-check that the result references an official, versioned profile and an open pack (FR-7.3) — see ADR-0004 and ADR-0005 for the full trust model. - Token issuance and the requests board are rate-limited per IP. A batch submission endpoint (
POST /benchmark/batch) exists specifically so a legitimate multi-result run doesn't burn through that same budget one result at a time.