API v1 · live

Build on the Octolit trading platform

One platform, two REST APIs, a WebSocket stream, FIX 4.4, signed webhooks and single sign-on. Provision clients, move money, trade and embed the web trader in your own product.

56REST operations
17webhook events
9languages per example
<100 mstypical order round-trip
wss://api.your-brand.com/rt/v1/ws LIVE
EUR-USD1.08452 ▲
XAU-USD2 412.30 ▲
BTC-USD71 240.5 ▼

Everything a broker or partner can integrate

Every capability is a per-brand switch in the Octolit CRM. Switch it on, create a key, start calling.

Trading API

Place an order with one call

Market, limit and stop orders with stop loss, take profit and leverage, checked by the same guards the web trader uses. Every order carries a client_order_id, so a retry can never double-fill.

cURLNode.jsPythonPHPC#JavaGoSwiftKotlin

POST /orders reference →

Place a market order
curl -X POST "https://api.your-brand.com/api/open/v1/orders" \
  -H "X-API-Key: $OCTOLIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "client_order_id": "ord-2026-0001",
  "trading_account_id": 55,
  "symbol": "EURUSD",
  "side": "buy",
  "type": "market",
  "lots": 0.1,
  "sl": 1.0795,
  "tp": 1.0925
}'
Create or update a client
curl -X PUT "https://api.your-brand.com/api/external/v1/users/cust_10042" \
  -H "X-Api-Key: $OCTOLIT_PARTNER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "brand_id": 13,
  "email": "anna@example.com",
  "first_name": "Anna",
  "last_name": "Lindqvist",
  "country": "SE",
  "phone": "+46701234567"
}'
Partner API

Your client ids, our platform

Create clients by your id with PUT /users/{external_id}, open live or demo accounts, book deposits with an idempotency key and send the user straight into the trader with a one-time login link. Nothing to reconcile.

Partner API reference →

Webhooks

Signed, retried, idempotent

Every delivery carries X-Webhook-Signature: t=…,v1=…, an HMAC-SHA256 of the timestamp and the raw body. Answer 2xx within 10 seconds; otherwise the platform retries at 1 min, 5 min, 30 min, 1 h, 2 h, 6 h and 14 h.

Webhook reference → · Try the verifier →

verify.js
import { createHmac, timingSafeEqual } from 'node:crypto';

export function verify(rawBody, header, secret) {
  const t = /t=(\d+)/.exec(header)?.[1];
  const v1 = /v1=([0-9a-f]+)/.exec(header)?.[1];
  if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const mac = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
  return timingSafeEqual(Buffer.from(mac), Buffer.from(v1));
}

Made for developers

Code in your language

Every endpoint shows the request in cURL, Node, Python, PHP, C#, Java, Go, Swift and Kotlin. Your choice sticks across the site.

Search everything

Press Ctrl K anywhere. Endpoints, fields, error codes and FIX tags are indexed.

Deep links everywhere

Link a colleague straight to one endpoint, one field or one error code.

OpenAPI 3.1 downloads

Generate clients or import into your API tool: both documents are published as YAML and JSON.

Embed the trader

Drop the web trader into your iOS, Android or web app with the embed SDKs and theme it to your brand. SDK guides →

Safe by default

Scoped keys, IP allow-lists, key expiry, replay-proof SSO, idempotent money posting and an audit line for every action done through a key.