arena-api
Operate the Open Arena REST API: start the server and make authenticated requests.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Operate the Open Arena REST API: start the server and make authenticated requests.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Run the arena evaluation sweep and interpret last_run.tsv and the leaderboard matrix.
Start and operate the autonomous reward-R&D experiment loop (setup, confirm, then run until interrupted).
Add or iterate on a custom reward in src/rewards/ and wire it into the sweep.
Configure an Open Arena sweep: author/edit config.yaml datasets, rewards, metrics, and experiments blocks.
Prepare evaluation datasets: write prepare_data.py, wire loaders in config.yaml, smoke-test that rows load.
| name | arena-api |
| description | Operate the Open Arena REST API: start the server and make authenticated requests. |
Read src/api/app.py for the live route list and openapi.yaml for the full resource model and schemas. This skill covers the server startup and the CLI client. Run arena --help for the current command set.
arena serve # binds to 127.0.0.1:8000 (default)
arena serve --host 0.0.0.0 # expose on all interfaces
arena serve --host 0.0.0.0 --port 9000
The server is a FastAPI app (src/api/app.py) served via uvicorn. It starts synchronously; Ctrl-C to stop.
All /v1/... routes require a Bearer token in the Authorization header.
Set the token via the environment variable:
export OPEN_ARENA_API_TOKEN=my-secret-token
arena serve # server reads the same env var to validate
Default when the variable is unset: open-arena-dev-token (development only — set a real token in production).
arena requestarena request GET /v1/verifiers
arena request GET /v1/leaderboards
arena request POST /v1/environments --file payload.json
arena request PATCH /v1/leaderboards/<id> --file update.json
arena request DELETE /v1/leaderboards/<id>
Options:
--server URL — server base URL (default: http://127.0.0.1:8000)--token TOKEN — override the bearer token (default: OPEN_ARENA_API_TOKEN env var or open-arena-dev-token)--file PATH — JSON file sent as the request body (required for POST/PATCH/PUT)The command prints the JSON response to stdout and exits. Errors print the server's Error JSON object.
The API is organized around leaderboards and environments:
GET /healthz health check (no auth)
GET /v1/verifiers list verifier suites
POST /v1/verifiers create verifier suite
GET /v1/verifiers/{id} get verifier suite
PATCH /v1/verifiers/{id} update verifier suite
DELETE /v1/verifiers/{id} delete verifier suite
GET /v1/environments list environments
POST /v1/environments create environment
GET /v1/environments/{id} get environment
PATCH /v1/environments/{id} update environment
DELETE /v1/environments/{id} delete environment
GET /v1/leaderboards list leaderboards
POST /v1/leaderboards create leaderboard
GET /v1/leaderboards/{id} get leaderboard
PATCH /v1/leaderboards/{id} update leaderboard metadata/ranking
DELETE /v1/leaderboards/{id} delete leaderboard
GET /v1/leaderboards/{id}/model-catalog get scoped model catalog
PUT /v1/leaderboards/{id}/model-catalog replace model catalog
PATCH /v1/leaderboards/{id}/model-catalog patch model catalog
GET /v1/leaderboards/{id}/models list models in catalog
POST /v1/leaderboards/{id}/models add model to catalog
GET /v1/leaderboards/{id}/models/{mid} get model
PATCH /v1/leaderboards/{id}/models/{mid} update model
DELETE /v1/leaderboards/{id}/models/{mid} remove model
GET /v1/leaderboards/{id}/environments list environment memberships
POST /v1/leaderboards/{id}/environments add environment to leaderboard
GET /v1/leaderboards/{id}/environments/{eid} get membership
PATCH /v1/leaderboards/{id}/environments/{eid} update membership
DELETE /v1/leaderboards/{id}/environments/{eid} remove environment from leaderboard
GET /v1/leaderboards/{id}/entries get leaderboard entries (results matrix)
GET /v1/runs list runs
POST /v1/runs submit run (returns 202 Accepted)
GET /v1/runs/{id} get run status
GET /v1/runs/{id}/results get run results
GET /v1/metric-kinds discovery: available metric kinds
GET /v1/aggregations discovery: available aggregations
GET /v1/model-providers discovery: available model providers
GET /v1/dataset-providers discovery: available dataset providers
Discovery endpoints (/v1/metric-kinds, /v1/aggregations, etc.) return the valid identifiers. Requests that reference an unknown identifier are rejected with HTTP 400.
Health check (no auth):
arena request GET /healthz
List all leaderboards:
arena request GET /v1/leaderboards
Create a leaderboard from a JSON file:
arena request POST /v1/leaderboards --file leaderboard.json
Submit a run:
arena request POST /v1/runs --file run_payload.json
Poll run status:
arena request GET /v1/runs/<run_id>
arena serve and arena request are subcommands of the arena group. The default behavior (no subcommand) still runs the local sweep.arena env, arena verifier, arena leaderboard, arena run, arena discover) and local-run-mode are available in open-arena (WS9). Install with pip install open-arena or uv sync from the repo root. Run arena --help for the current command set.openapi.yaml at the repo root. For schema details (request/response shapes, enum values, pagination cursors), read that file directly.