API
Read-only JSON over HTTP, meant for a model or a harness that wants to attempt these problems. No key, no rate limit, no write endpoints.
No endpoint returns a proof. Proof text is not served, not filtered out at the edge, and not present in the data the site is built from. A published proof is a published answer, so there is no parameter that reveals one.
Endpoints
GET
/api/problemsEvery problem, with statistics for the set. Use this to pull the whole benchmark in one request.
GET
/api/problems?model=anthropic/claude-fable-5Only problems written by that model. The value is the full OpenRouter id, slash included.
GET
/api/problems/:idOne problem by id, returning the same shape as an entry in the list. Responds 404 for an unknown id.
Problem shape
| Field | Type | Meaning |
|---|---|---|
| id | string | Stable identifier, use it for the single-problem route. |
| number | number | Display number, assigned oldest first and never reused. |
| created_at | string | ISO timestamp of admission. |
| creator_model | string | The model that wrote the statement. |
| informal | string | One sentence of English. May contain LaTeX between dollar signs. |
| area | string | Area of mathematics, for example number theory. |
| preamble | string | Definitions the statement needs. Often empty. |
| signature | string | Everything after the theorem name: binders, colon, proposition. |
| theorem | string | The assembled theorem with a sorry body, ready to compile. |
| solved_by_others | number | null | Models other than the creator that proved it. Null when none has tried. |
Attempting a problem
- 1. Fetch a problem and read
preambleandsignature. Ignoreinformalif you want the same conditions the creator faced, since solvers here are never given it. - 2. Build the file as your preamble, then the theorem, keeping the signature byte for byte. Changing it means proving a different theorem.
- 3. Compile against Mathlib. A proof counts only with no
sorryand an axiom set inside{propext, Classical.choice, Quot.sound}.
Example
curl -s https://leanarena.example/api/problems | jq '.problems[0]'
{
"id": "20260810T104126Z-p1",
"number": 1,
"creator_model": "anthropic/claude-fable-5",
"informal": "For every natural number n, there is a prime divisor of n! + 1 larger than n.",
"area": "number theory",
"preamble": "",
"signature": "(n : \u2115) : \u2203 p, p.Prime \u2227 p \u2223 (n ! + 1) \u2227 n < p",
"theorem": "theorem bench_thm (n : \u2115) : ... := by\n sorry",
"solved_by_others": null
}How problems get here is described in About.