API reference

Public API

Compute rentals, quotes, workloads, market data, and backtesting use JSON over HTTPS with scoped credentials. Compute endpoints are served from https://compute.itomarkets.com/api/v1. Market data uses https://itomarkets.com/api/v1. Trading is not part of this API for market-data endpoints.

Authentication

Send your key as Authorization: Bearer on every request. 401 means the request never authenticated; 403 means the key lacks the required scope. Generate an ito_* key from Settings in the dashboard. The full value is shown once.

baskets:readBasket catalog, pricing, history, chart, metrics, underlyers, overrides.
markets:readMarket listing via GET /markets/search.
backtests:readRegistries, validate, plan, run-status polling.
backtests:writeCreate custom strategies, dispatch runs.

Compute API and CLI

One section covers CLI sign-in, live GPU availability, quotes, rental status, access entitlements, and remote workloads. Use the Ito CLI device-authorization flow to receive an ito_device_* bearer token. Entitlement and workload routes require that device token. Dashboard API keys do not authenticate these device-only routes.

CLI setup from this repositoryShell
cd cli/ito-compute-clinpm cinpm linkito loginito status
POST/compute/device-authorization
POST/compute/oauth/token
GET/compute/auth/me
POST/compute/auth/revoke
GET/compute/inventory
GET / POST/compute/rfqs
GET/compute/rfqs/{ticketId}
GET/compute/procurement/status
GET/compute/entitlements/{entitlementId}
POST/compute/workloads
GET/compute/workloads/{runId}
POST/compute/workloads/{runId}/cancel
POST/compute/workloads/{runId}/cleanup

Rate limits

Per-key budgets: 120 requests / minute on GETs, 10 requests / minute on POSTs (including validate and plan. The tier follows the method, not the scope). Responses carry X-RateLimit-* headers; a 429 adds Retry-After.

Responses

Endpoints return the {success, message, data} envelope, except four basket reads (history, chart, metrics, underlyers) which return their payload natively. Each endpoint page states its shape and shows the exact example.

Python SDK

Install the official SDK for typed access to all endpoints. Only dependency is httpx. Automatic retries with exponential backoff on 429/5xx.

InstallShell
pip install ito-markets
Quick startPython
from ito import ItoClient
client = ItoClient("ito_...")  # your key from Settings
# List all baskets with current pricesbaskets = client.baskets.list()for b in baskets["data"]:    print(f"{b['id']}: ${b['basket_price']:.2f}")
# Get a single marketmarket = client.markets.get("will-btc-reach-100k")print(market["data"]["title"], market["data"]["last_price"])
# Historical L2 orderbookbook = client.data.orderbook(    venue="polymarket",    start="2026-06-01T00:00:00Z",    end="2026-06-01T01:00:00Z",    market="will-btc-reach-100k",)
# Run a backtest (submit + poll to completion)result = client.backtests.run(    strategy_id="wsc_crypto_updown_delta_hedged_roll",    dataset_id="clickhouse:ito_hot.platform_orderbook_l2",    venues=["polymarket"],    date_range={"start": "2026-05-01T00:00:00Z", "end": "2026-06-01T00:00:00Z"},)print(f"P&L: ${result['data']['metrics']['pnl_usd']:.2f}")

Source and full method reference: ito-markets on PyPI · source on GitHub. The SDK handles auth headers, pagination, typed exceptions (ItoAuthError, ItoRateLimitError, ItoNotFoundError), and can be used as a context manager.

Endpoints

First request
curl "https://itomarkets.com/api/v1/baskets" \  -H "Authorization: Bearer $ITO_API_KEY"
ErrorsJSON
// 401: missing or invalid key{  "success": false,  "message": "Invalid API key"}
// 403: valid key, missing scope{  "success": false,  "message": "API key lacks required scope: backtests:write"}
// 429: budget exhausted (Retry-After header set){  "success": false,  "message": "Rate limit exceeded: 10 per 1 minute. ..."}
EnvelopeJSON
// Standard envelope (meta on paginated lists){  "success": true,  "message": "Success",  "data": [ ... ],  "meta": { "page": 1, "per_page": 20, "total": 38, "pages": 2 }}