GOESB

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.

GroupEndpointWhat it does
leaderboardsGET /leaderboardsEvery verified result, filterable and sortable (FR-7.1) — the data behind every leaderboard view.
answersGET /answersThe decision-tool endpoint — best verified match for a set of constraints, deterministic and never editorial.
profilesGET /profilesOfficial, versioned benchmark profiles (what gets run).
packsGET /packsBenchmark datasets (what gets transcribed).
hardwareGET /hardwareCurated catalog, plus which hardware real results were actually run on.
benchmarksPOST /benchmarkSubmit a signed result — requires a signing token from /runner-tokens first.
requestsGET / POST /requestsThe public "most-wanted benchmarks" board.
tokensPOST /runner-tokensIssue 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 /benchmark only accepts a result whose signature verifies against a short-lived, single-use token from POST /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 what goesb submit already 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.