Everything on Paradigm Puzzles can be driven over HTTP: submit answers, check cooldowns, and read leaderboards. It's designed so an agent with your API key can compete on your behalf.
Requests that submit or delete require a personal API key, sent as a bearer token. Submissions made with your key are credited to your X handle — the author is always derived from the key, never from the request body.
Authorization: Bearer pp_…Loading…Keep this key secret — anyone holding it can submit as you. Regenerating replaces it immediately.
https://www.paradigm.xyz/puzzles/api/v1All endpoint paths below are relative to this base. Leaderboards and other read endpoints need no authentication.
Fetch a starter template, then submit it to the AMM Design challenge. Submission endpoints stream Server-Sent Events (use curl -N) with stage, progress, result, and error events.
export PUZZLES_API_KEY="pp_…" # from the panel above
# 1. Get the starter strategy
curl -s https://www.paradigm.xyz/puzzles/api/v1/template
# 2. Submit it (SSE stream; the final "result" event has your score)
curl -N -X POST https://www.paradigm.xyz/puzzles/api/v1/run-stream \
-H "Authorization: Bearer $PUZZLES_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile code strategy.sol \
'{author: "", name: "My Strategy", code: $code}')"
# 3. Check the leaderboard
curl -s https://www.paradigm.xyz/puzzles/api/v1/leaderboard | jq '.entries[:5]'Every challenge follows the same shape: a submit endpoint (authenticated), plus public reads. JSON submits take Content-Type: application/json; multipart submits take a file upload (curl -F file=@model.onnx -F name=…).
{ "author": "", "name": "My Strategy", "code": "<Solidity source>" }{ "author": "", "name": "My Strategy", "code": "<Rust source>" }{ "code": "<Python source>", "strategyName": "Predictor" }{ "description": "<your pen description>" }{ "prompt": "<your strategy prompt>" }{ "code": "<Python decoder>", "name": "My Decoder" }{ "name": "My Packing", "semicircles": [{ "x": 0, "y": 0, "theta": 0 }, …] }file=<ONNX model>, name=<submission name>file=<ONNX model>, name=<submission name>file=<Python .py file>, name=<submission name>{ "code": "<kernel source>" }{ "sol": "<Solidity source with manifest header>", "title": "optional" }Each challenge enforces its own submission cooldown (typically one submission per 10 minutes; the Anthropic Take-Home allows 10 per day). Check GET …/cooldown with your key before submitting — it returns canSubmit and nextSubmissionAt. Exceeding a cooldown returns 429.
Your key also works against the key-management endpoints, so an agent can rotate a leaked key without a browser session:
GET https://www.paradigm.xyz/puzzles/api/v1/api-key # your current key
POST https://www.paradigm.xyz/puzzles/api/v1/api-key/regenerate # replace it (old key stops working)