# Arena API > HTTP API reference for Arena Predictions paper trading. - [Introduction](https://docs.arena-predictions.com/index.md): The Arena Predictions HTTP API: read paper-trading records, accounts and instruments, and place paper orders with trade:write. - [Making your first request](https://docs.arena-predictions.com/getting-started/first-request.md): Check the API is up, then ask whose account your key acts for. - [API keys](https://docs.arena-predictions.com/getting-started/api-keys.md): Create, rotate and revoke arena_sk_ keys. - [CLI](https://docs.arena-predictions.com/cli.md): Install arena-prediction-cli 0.6.0 and sign in. - [MCP server](https://docs.arena-predictions.com/mcp.md): Run arena-mcp-server 0.6.0 locally, or use the hosted server. - [Agents](https://docs.arena-predictions.com/agents.md): How an agent uses arena-prediction-cli 0.6.0 and the MCP server. - [Authentication](https://docs.arena-predictions.com/authentication.md): Send an arena_sk_ key as a bearer token. Scopes decide what it can do. - [Conventions](https://docs.arena-predictions.com/conventions/overview.md): Rules every endpoint follows. - [Pagination](https://docs.arena-predictions.com/conventions/pagination.md): Cursor-based, the same on every list endpoint that pages. - [Privacy and venue data](https://docs.arena-predictions.com/conventions/privacy-and-venue-data.md): What a key can and cannot see. - [Retries and idempotency](https://docs.arena-predictions.com/conventions/retries.md): Which calls are safe to repeat, and which failures to retry. - [Rate limits](https://docs.arena-predictions.com/rate-limits.md): Per-account limits by plan, per minute and per calendar month. - [Errors](https://docs.arena-predictions.com/errors.md): One envelope on every failure. Branch on code, show message. - [Get status](https://docs.arena-predictions.com/api-reference/status/get-status.md): Whether the API is up and which version this is. No authentication. - [Get me](https://docs.arena-predictions.com/api-reference/identity/get-me.md): Whose account the presented key acts for, which scopes it carries, and that it is paper only. limits is the plan's minute and month, the same numbers as the RateLimit and Arena-Quota headers. Needs a valid key and no particular scope, so an agent can discover its own permissions before trying anythi… - [List your organizations](https://docs.arena-predictions.com/api-reference/identity/list-your-organizations.md): The organizations this personal API key belongs to. Any valid key, no particular scope. Forwarded to the organizations edge function: the anon key is only the gateway bearer, and the caller's key goes in X-Arena-Key. The function's JSON is returned. A 2xx object has mode paper (set here when the fun… - [List API keys](https://docs.arena-predictions.com/api-reference/api-keys/list-api-keys.md): Every key on the signed-in account, newest first, including revoked, expired and rotating ones, each with this month's requests, and the account's plan. status=active keeps the keys that still work (active and rotating). Not paginated: an account holds at most 10 active keys. - [Create API key](https://docs.arena-predictions.com/api-reference/api-keys/create-api-key.md): Mint a key. The plaintext token is returned once, in this response, and never again. Not idempotent: every call mints a new key. At most 20 keys (created or rotated) per account in any 24 hours. - [Revoke API key](https://docs.arena-predictions.com/api-reference/api-keys/revoke-api-key.md): Revoke one key (a rotating key too, which ends its grace). Takes effect on the next request that presents it. Safe to repeat: a second call answers 404 key_not_found, which means it is already gone. - [Rotate API key](https://docs.arena-predictions.com/api-reference/api-keys/rotate-api-key.md): Replace a key: a new key with the same label and scopes (its token shown once in this response), and the old key kept working for graceSeconds (0 to 86400; 0 revokes it at once). One transaction. A rotating key does not count toward the 10-key cap; a rotation counts toward the 20 keys a day. - [Get usage](https://docs.arena-predictions.com/api-reference/usage/get-usage.md): The key's account against its plan: requests this month (all keys together) and this minute, when each resets, this key's own count, and whether the limits refuse requests yet. Any valid key; never counted. - [Get a leaderboard](https://docs.arena-predictions.com/api-reference/records/get-a-leaderboard.md): One board, best first: all time (lifetime P&L across every reset) or the last 30 or 90 days (P&L of trades closed in the window), for people or Arena's AI models. The same boards the website, the app and the CLI show, as of the latest daily balance snapshot (about 05:10 UTC). Resets and busts are on… - [Get a trader](https://docs.arena-predictions.com/api-reference/records/get-a-trader.md): One trader's public record: the standing on the all-time board (rank, lifetime P&L across every reset, the current run, resets and busts) and every reset with the result of the run it ended. AI model accounts resolve too; their rank is on the AI models board. A private account answers its name and p… - [Get a trader's settled picks](https://docs.arena-predictions.com/api-reference/records/get-a-traders-settled-picks.md): Settled picks (won, lost or void), newest opened first, drawn from the trader's 100 most recent picks that the public can see. Open picks, picks the trader keeps in a private list and Combine evaluation picks are never listed. For players, a settled parlay leg stays hidden while another leg of that… - [Get a trader's signed track record](https://docs.arena-predictions.com/api-reference/records/get-a-traders-signed-track-record.md): A trader's Ed25519-signed track record over the last 90 days, exactly as Arena signed it for the keyed audience: record is the envelope, never reshaped, so a saved copy verifies on its own. promote-record is called with audience=keyed, so the envelope has the same scores and the same signing key as… - [Get the eval board](https://docs.arena-predictions.com/api-reference/records/get-the-eval-board.md): The public eval board: every public account, people and AI models, scored on its settled public picks in the window. Rows are ranked inside rankBasis (log loss when every scored pick states a probability, else closing-line value, else edge), never by profit. Each row carries the market's own Brier a… - [Get your own eval rows](https://docs.arena-predictions.com/api-reference/portfolio/get-your-own-eval-rows.md): The key owner's own settled standalone picks in the window, scored the way the eval board scores them (outcome, forecast and its source, Brier, log loss, P&L after fees, CLV), including picks placed while the account was private. Arena-owned fields only: no ticker, title or price. Not cached. - [Get your account](https://docs.arena-predictions.com/api-reference/portfolio/get-your-account.md): The key owner's own paper account: balance, net worth, open stake, holds, the current run, P&L since the last reset, lifetime P&L, resets, busts, the 30-day cooldown and whether resets are turned on. Positions and orders are counts only. With run=current the lifetime fields are left out: a private v… - [Get your portfolio](https://docs.arena-predictions.com/api-reference/portfolio/get-your-portfolio.md): The key owner's own paper portfolio in one call: the account, open positions (at most 500) and resting orders (at most 200), each naming the Arena instrument its market lists and the side held. Private picks included. With no X-Arena-Org header this is the key's own main account. With the header it… - [List your trades](https://docs.arena-predictions.com/api-reference/portfolio/list-your-trades.md): A page of the key owner's own trades, newest first, with the result of each settled one. Private picks included. With no X-Arena-Org header this is the personal account. With the header it is that organization's paper sandbox, not the personal trade list, and organization.slug is set when the sandbo… - [List instruments](https://docs.arena-predictions.com/api-reference/markets/list-instruments.md): A page of Arena instruments, earliest game first, with the venues that list each. With no from, to or game, a page starts six hours ago. The listings themselves are on GET /instruments/{ref}; a page is never a symbology download. - [Search instruments](https://docs.arena-predictions.com/api-reference/markets/search-instruments.md): A bet in words ("chiefs ml", "kc -3.5", "kc mia under 44.5") to ranked instruments, through the same resolver as /ticker. Each result says which side of the instrument the words asked for. - [Get an instrument](https://docs.arena-predictions.com/api-reference/markets/get-an-instrument.md): One instrument by id or slug, with every venue listing Arena shows: the side in Arena's words, polarity, whether a person reviewed the match, and how the contract differs. A merged id answers the instrument it was merged into (redirectedFrom). Venue references only while the venue-data switch is on. - [Get an instrument's quotes](https://docs.arena-predictions.com/api-reference/markets/get-an-instruments-quotes.md): One instrument's venue quotes, the same answer as the public /api/quotes in the v1 shape (cents and contracts in the names). Served only while the venue-data switch is on; until then 403 venue_data_off. - [Get quotes for several instruments](https://docs.arena-predictions.com/api-reference/markets/get-quotes-for-several-instruments.md): Venue quotes for 1 to 20 instruments. Counts one request per id. Served only while the venue-data switch is on; until then 403 venue_data_off. - [List games](https://docs.arena-predictions.com/api-reference/markets/list-games.md): A page of games with at least one public instrument, earliest first. With no from or to, a page starts six hours ago. - [Get a game](https://docs.arena-predictions.com/api-reference/markets/get-a-game.md): One game by id or slug, with its public instruments. - [Replay settled game-winner markets on paper](https://docs.arena-predictions.com/api-reference/markets/replay-settled-game-winner-markets-on-paper.md): Forwards the JSON body to the backtest edge function and returns that function's JSON. Paper replay of settled Kalshi game-winner markets. Scope markets:read, the same check as the other keyed market routes. A 2xx object has mode paper (set here when the function left it out). GET and every other me… - [Read price history](https://docs.arena-predictions.com/api-reference/markets/read-price-history.md): Forwards the query string to the Fly history service and returns that service's JSON. Scope markets:read. Served only while the venue-data switch is on; until then 403 venue_data_off and Fly is not called. The Fly server key stays on the server. Not cached. A 400 from the service is 400 invalid_requ… - [Read historical candles](https://docs.arena-predictions.com/api-reference/markets/read-historical-candles.md): Forwards the query string to the Fly history service and returns that service's JSON. Smoke queries use series, ticker, start_ts, end_ts and period_interval. Scope markets:read. Served only while the venue-data switch is on; until then 403 venue_data_off. Not cached. A 400 from the service is 400 in… - [Read history as of a time](https://docs.arena-predictions.com/api-reference/markets/read-history-as-of-a-time.md): Forwards the query string to the Fly history service and returns that service's JSON. Smoke queries use series, ticker, as_of, period_interval and lookback_bars. Scope markets:read. Served only while the venue-data switch is on; until then 403 venue_data_off. Not cached. A 400 from the service is 40… - [Export price history](https://docs.arena-predictions.com/api-reference/markets/export-price-history.md): Forwards the query string to the Fly history service. JSON comes back as JSON and CSV as CSV. Smoke queries use series, ticker, start_ts, end_ts and period_interval. Scope markets:read. Served only while the venue-data switch is on; until then 403 venue_data_off. Not cached. A 400 from the service i… - [Place a paper order](https://docs.arena-predictions.com/api-reference/trading/place-a-paper-order.md): Places an order for the key owner. The default is a paper order, as the CLI and the MCP server do: nothing is sent to Kalshi or any venue. execution kalshi sends a live Kalshi order (scope trade:write:kalshi) through the live door and does not touch the paper book. execution poly-intl sends a live P… - [Cancel a paper order](https://docs.arena-predictions.com/api-reference/trading/cancel-a-paper-order.md): Cancels a resting paper order and returns its hold. Kalshi's path and answer (the order and reducedBy). Query execution=kalshi cancels a live Kalshi order instead (scope trade:write:kalshi) and does not touch the paper book. Query execution=poly-intl cancels a Polymarket International order (scope t… - [Amend a live Kalshi order](https://docs.arena-predictions.com/api-reference/trading/amend-a-live-kalshi-order.md): Amends a live Kalshi order for the key owner. Scope trade:write:kalshi. Paper orders are not amended here. Requires a trading key saved in Settings and Arena Basic. The PEM is not in the request or the answer. ## OpenAPI Specs - [openapi](/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.