Rekn API
Bearer-token API for Rekn, a prediction-market venue currently running in private preview on paper money. Every dollar amount is a decimal string with two places (e.g. "12.50") unless the field name says `Cents`, in which case it is an integer 1–99. Create a key from the Developer card on your profile page — the key is shown once, at creation. Two scopes: `read` (catalogue, account, positions, order history) and `trade` (place/cancel orders) — a key needs `trade` for any write. While the venue is in private preview, this includes the catalogue reads (Markets) — the whole product is invite-gated, so a `read`-scoped key is required there too. Those endpoints become anonymous once the preview ends.
Authentication
Every request carries Authorization: Bearer rk_live_<prefix>_<secret>, including the catalogue reads below — Rekn is in private preview, so the whole product is invite-gated, and these become key-free only once the preview ends. Create a key from the “Developer” card on your profile — the secret is shown once, at creation, and never again. Two scopes: read for the catalogue, your account, positions and order history, and trade to place or cancel orders. Every response carries an X-Request-Id header and, on error, the shape { "error": { "code", "message" } }. A rate-limited request returns 429 with a Retry-After header.
Markets
/api/v1/marketsList marketsPaged, filterable list of every market on the venue (seed catalogue + minted). Supports conditional GET via `ETag`/`If-None-Match`. Requires a `read`-scoped key while Rekn is in private preview; anonymous once the preview ends.
curl -X GET https://rekn.bet/api/v1/markets \ -H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
/api/v1/markets/{id}Get one marketRequires a `read`-scoped key while Rekn is in private preview; anonymous once the preview ends.
curl -X GET https://rekn.bet/api/v1/markets/us-2028-election-winner \ -H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
/api/v1/markets/{id}/bookGet the resting order bookReal resting interest only, aggregated by price level. Anonymised: never who, only size and order count. Pass outcomeId for one current contract outcome. Omitted outcomeId retains the legacy market-wide aggregate, which is not a single executable instrument. Requires a `read`-scoped key while Rekn is in private preview; anonymous once the preview ends.
Account
/api/v1/accountGet your accountCash, reserved and available buying power. Requires `read` scope.
curl -X GET https://rekn.bet/api/v1/account \ -H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
/api/v1/positionsList your open positionscurl -X GET https://rekn.bet/api/v1/positions \ -H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Orders
/api/v1/ordersList your open (resting) orderscurl -X GET https://rekn.bet/api/v1/orders \ -H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
/api/v1/ordersPlace an orderSubmit intent — market, outcome, side, spend, and an optional marketable limit. The venue decides the fill; you never name a price. Requires `trade` scope. Idempotent: pass `clientOrderId` in the body or an `Idempotency-Key` header — a retried request with the same key returns the original result with `applied: false`.
curl -X POST https://rekn.bet/api/v1/orders \
-H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"marketId":"...","outcomeId":"...","side":"yes","amountUsd":10,"clientOrderId":"my-order-1"}'/api/v1/orders/{id}Cancel a resting orderRequires `trade` scope. Cancelling another account’s order, or an order that no longer exists, returns 404.
curl -X DELETE https://rekn.bet/api/v1/orders/us-2028-election-winner \ -H "Authorization: Bearer rk_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Same paper-money posture as the rest of the preview — see /about. Full machine-readable schema: sign in to download.