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 answers200with the updated resource. - Key management,
GET /meand every error areCache-Control: no-store. Successful records reads areCache-Control: private, max-age=30. - A method a path does not serve answers
405 method_not_allowedwith anAllowheader. - 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
Sendx-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. Withinv1, 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.