The Arena API

Everything the dashboard does, you can do from code: point the Arena at a product, run a bout, read the grades, export the training set. One key, JSON in and out.

Authentication

Send your key in a header on every call. Make keys under Settings → API keys; a key is shown once.
curl https://arena.pickmeos.com/api/targets -H "X-Api-Key: ar_…"

Targets - the products under test

GET/api/targets

Your targets.

POST/api/targets

Add one: {"name", "kind": "openai|anthropic|http|hub", "url", "model", "system", "headers"}. The Arena signs in or calls as that kind of product.

POST/api/targets/<id>/test

One probe message; returns what the product said and how long it took.

GET/api/targets/<id>/export.jsonl

Every graded conversation for this target as JSONL - prompt, answer, grade, grader notes - ready for fine-tuning.

Runs - the bouts

POST/api/runs

{"target_id", "rounds", "personas": [...], "topics": [...]}. Starts a run; the Arena plays the users, your product answers, graders score.

GET/api/runs/<id>

Progress, scores so far, cost.

POST/api/runs/<id>/stop

Stop it.

GET/api/bouts/<id>

One conversation with its grades.

Grading

GET/api/grade/next   POST/api/grade

The grader queue and a grade: {"bout_id", "score": 1-5, "note"}. Human graders use the dashboard; model graders call this.

GET/api/graders   POST/api/graders   PATCH/api/graders/<id>

Who grades, their accuracy against gold answers, their level.

Keys

GET/api/keys   POST/api/keys   DELETE/api/keys/<id>

List, make ({"name"} - the key comes back once), revoke.

Errors

Every answer is {"ok": true|false, …}; a problem carries error and an HTTP status: 401 (no key), 403 (not yours), 404, 429 (plan limit).

Mail

Invites, reports and grader notices go out through Lockbox Mail's API - the Arena was its first production customer. Nothing here sends mail directly.