Skip to main content
Calibri exposes REST and WebSocket APIs for discovering markets, reading live books, placing signed orders, and managing positions and account data.

APIs

Calibri’s API is grouped by path prefix under one base URL. Each group covers a distinct part of an integration.

Market data

https://calibri.io/api/v2/pythiaDiscover events and markets, then read books, tickers, candles, and the public trade tape — no authentication.

Trading

https://calibri.io/api/v2/atlas · …/pythiaPlace EIP-712-signed orders, then list and cancel resting orders. Needs a key your client can sign with — see below.

Account

https://calibri.io/api/v2/atlasBalances, transactions, PnL, contracts, limits, preferences, and rewards.

Wallet

https://calibri.io/api/v2/atlasSelf-custody Safe setup, passkey enrolment, signing keys, session keys, and gasless relay — without holding funds on Calibri.

WebSocket

Realtime streamsOrder-book increments, candles, trade prints, underlying prices, and your own order / fill / balance updates.

Identity

https://calibri.io/api/v2/personaAccount reads and wallet linking for machine integrations. Browser sign-in is a product UI flow, not a documented API path.

Before you integrate

End-to-end flow

Wallet config, approvals, funding, a signed order, status, WebSocket — in order.

Authentication

Mint an API key and HMAC-sign every private request.

Rate limits

Request limits and caching behaviour for public and private endpoints.

Errors

HTTP status codes and the errors: ["dot.coded"] body shape.

Models

Every request and response shape, generated from the specification.

Self-custody

How signed orders and Safe wallets work — Calibri never holds your funds.

Can your account place orders from a script?

Reading is always available. Writing depends on what owns your wallet, because an order carries your own signature as well as the request signature — and a passkey cannot sign outside the browser it was created in.

Your own wallet

signature_type 2. You hold the key, so your client signs orders, withdrawals and redemptions. Nothing to set up.

Passkey wallet

signature_type 3. Reads work as they are. To place orders, add a signing key — a wallet you hold the key for, which becomes an owner of the same Safe.
Check signature_type on GET /api/v2/atlas/account/wallet before you build, and see Authentication for what each type signs.

Base URL

All requests share one base URL and are routed by path prefix:

Response format

Responses are plain JSON — a resource object or an array of them. There is no { success, data } envelope. Monetary and volume values are strings — parse them as decimals, not floats.

Authentication

Private requests use an HMAC-signed API key (X-Auth-Apikey, X-Auth-Nonce, X-Auth-Signature). There is no Authorization: Bearer header. See Authentication.
Authentication proves who you are. It does not authorise the movement of funds. Every order carries your own EIP-712 signature; every transfer out of your Safe is a transaction you sign.

Pagination

List endpoints that page accept page and limit (or similar). Totals come back in response headers:

Caching

Public market-data routes send Cache-Control (short TTL on live books, longer on browse, immutable on closed asset ranges). Private account and trade routes are not shared-cacheable.