Build on the catastrophe-risk market.
The RSKX API is the same surface our trading UI runs on top of. REST for order entry, history, and positions. WebSocket for streaming book and trade data. FIX 4.4 for execution desks who already speak it. All endpoints below are documented pre-launch — production base URL goes live Q3 2026 alongside DCM designation.
Overview
Base URL: https://api.rskx.io/v1 · WebSocket: wss://stream.rskx.io/v1 ·
FIX: fix.rskx.io:443 (TLS, NY4 cross-connect available)
Contracts are binary event contracts, each keyed to an H3 resolution-9 hex and a defined peril + threshold. Each contract pays $1.00 on a qualifying event, $0.00 otherwise. All amounts are USD, prices are cents (0.00–100.00).
Conventions
- Request & response bodies: JSON, UTF-8,
Content-Type: application/json - Timestamps: ISO-8601 UTC, millisecond precision (
2026-05-19T14:32:18.412Z) - Decimal: strings to preserve precision (e.g.
"price": "0.5630") - Sequence: monotonic
seqper stream channel; resyncs are explicit, never silent - Idempotency:
Idempotency-Keyheader on order submit; same key returns same response
Authentication
Every request is authenticated with an API key + HMAC-SHA256 signature over a canonicalized request string. Keys are generated from the Account → API keys page. Treat the secret like a password.
Headers
X-RSKX-2FA on the request.
Errors & rate limits
HTTP status codes for transport-level failures. Application errors return 4xx/5xx with a structured body.
Rate limits
- Public market data: 100 req/sec per IP
- Authenticated reads: 50 req/sec per key, 600/min
- Order writes: 25 req/sec per key, burst 100 (then 429)
- Designated MM keys: 500 req/sec — request via api@rskx.io
Contracts
List active contracts, retrieve a single contract by id, or fetch metadata by (peril, hex).
/contractsList active contracts. Filter by peril, season, or hex prefix.
| Param | Type | Req | Description |
|---|---|---|---|
| peril | string | no | One of hurricane, wildfire, flood, earthquake, severe_storm |
| season | int | no | Contract season (e.g. 2026) |
| hex_prefix | string | no | First N chars of H3 cell id (filters by region) |
| limit | int | no | Default 100, max 1000 |
/contracts/:idGet a single contract by id, including full specification and resolution metadata.
Order book
/contracts/:id/bookTop-N snapshot of the lit order book. For streaming L2 use the WebSocket channel.
Orders
Submit, query, and cancel orders. Orders are binary: side is yes or no. Prices are cents (0.0–1.0).
/ordersSubmit a new order. Use Idempotency-Key header for safe retries.
| Param | Type | Req | Description |
|---|---|---|---|
| contract | string | yes | Contract id, e.g. HUR-2026-872a10072ffffff |
| side | enum | yes | yes or no |
| type | enum | yes | market · limit · ioc · fok |
| qty | int | yes | Contracts. Each contract pays $1.00 on event. |
| price | decimal | no* | 0.0–1.0. Required if type=limit. Optional max_price for market orders. |
| tif | enum | no | GTC · DAY · IOC |
/orders/:idRetrieve an order by id. Includes status, filled_qty, avg_price, fills array.
/orders/:idCancel an open order. No-op if already filled/canceled. Returns latest state.
Positions
/positionsAll open positions grouped by contract. Includes net qty, average entry, unrealized P&L.
Fills
/fillsHistorical fills, paginated by cursor. Use from/to for time-bounded queries.
RFQ & large blocks
/rfqSubmit a block RFQ. Returns an indicative all-in price; POST /rfq/:id/accept within 30s to execute at indicated levels.
WebSocket streaming
Subscribe to streaming book updates, trades, and order/position events. Single connection, multiple channel subscriptions, monotonic seq per channel.
FIX 4.4
For execution desks already on FIX. Logon at fix.rskx.io:443, TLS-secured. NY4 cross-connect available — contact fix@rskx.io.
Supported messages
D— New Order Single (limit, market, IOC, FOK)F— Order Cancel RequestG— Order Cancel/Replace Request8— Execution Report (fills, partials, cancels)AB— New Order Multileg (for paired YES/NO basket trades)
Object reference
Contract
| Field | Type | Description |
|---|---|---|
| id | string | Canonical id, e.g. HUR-2026-872a10072ffffff |
| peril | enum | One of the 5 perils |
| hex | string | H3 resolution-9 cell id |
| threshold | string | Human-readable trigger condition |
| data_source | string | Authoritative public source (NOAA HURDAT2, USGS ShakeMap, etc.) |
| settles_at | datetime | UTC, end of contract period |
| status | enum | open · settling · disputed · resolved · paid |
Order
| Field | Type | Description |
|---|---|---|
| order_id | string | Server-assigned id |
| status | enum | open · partial · filled · canceled · rejected |
| filled_qty | int | Cumulative filled contracts |
| avg_price | decimal | Volume-weighted average fill price |
Changelog
- v1.0 (Q3 2026 target) — Public API GA at DCM designation
- v0.9-beta — RFQ endpoint, multileg FIX, idempotency keys
- v0.8-beta — FIX 4.4 support, NY4 cross-connect
- v0.5-alpha — Private beta REST + WebSocket for design partners