Skip to main content

Names

Units are in the name

A contract pays $1 if it settles yes. Stake = contracts × cents ÷ 100. On one venue the order fills whole at one price. route best may split that ticket across eligible venues. fills lists each leg: venue, contracts, and priceCents while venue data is on. fillVenue is the first leg. route kalshi stays on one venue.

Paper accounts

Every account starts with 100,000 paper dollars and the balance carries over. A reset (at most one every 30 days) returns cash to 100,000 and starts a new run; run counts resets and is 0 until the first. Lifetime profit counts every run, so a reset never lifts a rank.

Identifiers

Store ids as strings. Never infer meaning from their contents.

Responses

  • Every keyed response body includes "mode": "paper".
  • Create answers 201. Revoke answers 200 with the updated resource.
  • Key management, GET /me and every error are Cache-Control: no-store. Successful records reads are Cache-Control: private, max-age=30.
  • A method a path does not serve answers 405 method_not_allowed with an Allow header.
  • No streaming under a key. Poll.

Headers

GET /openapi.json is CDN-cached and carries neither the request id nor rate headers.

Identify your client

Send x-arena-client: yourapp/1.2.0 or a descriptive User-Agent. Not enforced today; it lets Arena warn an outdated client instead of breaking it.

Versioning

The version is in the path. Within v1, changes are additive: new endpoints and optional fields, never a rename or removal. A breaking change ships as /api/v2, with v1 kept at least 180 days.