One REST API. Binary & digit contracts. Bearer auth. Idempotent. Sub-second settlement on ticks. Bring your own broker app, keep 100% of your markup — VARJIX is the rails.
https://api.varjix.com/v1All endpoints require HTTPS. Rate-limited per partner + per trader.Four calls and you've placed your first trade through VARJIX. End-to-end in under a minute.
Become a VARJIX operator at partners.varjix.com and pick a tier (Launch / Pro / Scale). Then request your key — it's shown once: vk_live_…
# Founder-issued (we'll provision this for you on plan activation):
curl https://api.varjix.com/v1/me \
-H "Authorization: Bearer vk_live_xxxxxxxxxxxx_yyyyyyyyyy"Your app handles Deriv OAuth (using your own App ID). Once you have tokens, post them — VARJIX auto-provisions a trader and returns its canonical id. Use whichever id you already have on your side via traderExternalId.
curl -X POST https://api.varjix.com/v1/auth/deriv/exchange \
-H "Authorization: Bearer $VARJIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"traderExternalId": "user_abc123",
"email": "[email protected]",
"accounts": [
{"accountId":"CR1234567","token":"a1-xxx","accountMode":"REAL","currency":"USD"},
{"accountId":"VRTC9876543","token":"a1-yyy","accountMode":"DEMO","currency":"USD"}
]
}'curl "https://api.varjix.com/v1/balance?traderExternalId=user_abc123" \
-H "Authorization: Bearer $VARJIX_API_KEY"curl -X POST https://api.varjix.com/v1/orders/binary \
-H "Authorization: Bearer $VARJIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"traderExternalId": "user_abc123",
"clientOrderId": "uuid-v4-here",
"asset": "R_100",
"contractType": "DIGITOVER",
"stake": 1.00,
"duration": 1,
"durationUnit": "t",
"barrier": "5"
}'{
"orderId": "ord_xyz",
"brokerOrderId": "299abc123",
"status": "CLOSED",
"stake": 1.0,
"potentialPayout": 1.95,
"pnl": 0.95,
"entryPrice": 1234.56,
"exitPrice": 1234.78,
"openedAt": "2026-05-26T17:56:47Z",
"closedAt": "2026-05-26T17:56:48.500Z"
}We run the broker, idempotency, settlement, ledger, and admin so you can focus on your traders' UX.
Tick contracts (duration ≤ 10, unit 't') wait inline on the response — you get the closed P&L in the same request.
Every order is keyed by your clientOrderId. Retry safely; we'll never double-fire on Deriv.
Keep your markup at source. VARJIX never touches your trader funds — Deriv custodies, we orchestrate.
Your traders + orders appear in adm.varjix.com tagged with your operator profile. No dashboards to build.
CALL/PUT + DIGITMATCH/DIFF/OVER/UNDER/EVEN/ODD live today. Multipliers + copy + AI co-pilot in v2.
Origin behind Cloudflare. p95 < 250ms anywhere in the world. HSTS + CSP + frame-deny enforced by nginx.
Every request must include your API key in the Authorization header. Keys belong to one Partner (one operator account). Keep them server-side only — never ship a key to the browser.
Authorization: Bearer vk_live_<16hex>_<48hex>402 SUBSCRIPTION_INACTIVE. Top up your wallet at partners.varjix.com to resume.All 9 v1 endpoints. Phase 2 (WebSockets, copy, AI) listed at the bottom.
/v1/mePartner profile + subscription status/v1/auth/deriv/exchangeUpload trader Deriv tokens/v1/accountsList trader's Deriv accounts/v1/accounts/activeSwitch trader's active account/v1/balanceReal-time Deriv balance/v1/orders/binaryPlace CALL/PUT or DIGIT* contract/v1/orders/{id}/closeForce-close an open contract/v1/ordersPaginated order history/v1/orders/binaryPlaces a binary, call/put, or digit contract on Deriv via the trader's connection. Idempotent on clientOrderId — retry safely.
{
"traderExternalId": "user_abc123",
"clientOrderId": "uuid-v4-string",
"asset": "R_100",
"contractType": "DIGITOVER",
"stake": 1.00,
"duration": 1,
"durationUnit": "t",
"barrier": "5",
"waitForSettle": true
}traderExternalIdstringYour app-side stable user idclientOrderIdstringUUID v4 — required for idempotencyassetstringDeriv symbol (R_100, frxEURUSD, …)contractTypeenumCALL · PUT · DIGITMATCH/DIFF/OVER/UNDER/EVEN/ODDstakenumberUSD, ≥ 0.35 (Deriv floor)durationinteger≥ 1durationUnitenumt · s · m · h · dbarrierstring?'0'..'9' — required for DIGITMATCH/DIFF/OVER/UNDERwaitForSettlebool?Force inline settle for non-tick contracts{
"orderId": "ord_xyz",
"brokerOrderId": "299abc123",
"status": "CLOSED",
"stake": 1.0,
"potentialPayout": 1.95,
"buyPrice": 1.0,
"pnl": 0.95,
"entryPrice": 1234.56,
"exitPrice": 1234.78,
"openedAt": "2026-05-26T17:56:47Z",
"closedAt": "2026-05-26T17:56:48.5Z"
}{
"orderId": "ord_xyz",
"brokerOrderId": "299abc123",
"status": "OPEN",
"stake": 1.0,
"potentialPayout": 1.95,
"buyPrice": 1.0,
"openedAt": "2026-05-26T17:56:47Z"
}Poll GET /v1/orders until status="CLOSED", or wait for v2 webhooks.
/v1/auth/deriv/exchangeStores a trader's Deriv tokens server-side (AES-256 encrypted at rest). Auto-provisions a VARJIX trader on first call. Subsequent calls for the same traderExternalId upsert.
// Request body
{
"traderExternalId": "user_abc123",
"email": "[email protected]",
"name": "Jane Doe",
"accounts": [
{
"accountId": "CR1234567",
"token": "a1-xxxxxxxxxxxxxxx",
"accountMode": "REAL",
"currency": "USD"
}
]
}// 200 OK
{
"traderId": "ckxyz...",
"activeAccountId": "CR1234567",
"activeAccountMode": "REAL",
"connectedAt": "2026-05-26T17:56:47Z"
}/v1/me{
"partnerId": "ckabc...",
"name": "MK PRO",
"plan": "PRO",
"saasStatus": "ACTIVE",
"tradersCount": 1247,
"scopes": ["trading:read", "trading:write", ...]
}/v1/balance?traderExternalId=…{
"accountId": "CR1234567",
"accountMode": "REAL",
"balance": 1247.83,
"currency": "USD"
}Every error returns the same envelope:
{ "error": "INVALID_CONTRACT", "message": "Human-readable detail", "requestId": "req_abc" }| HTTP | Code | Cause |
|---|---|---|
| 401 | UNAUTHENTICATED | Missing or malformed Bearer key |
| 402 | SUBSCRIPTION_INACTIVE | Partner's VARJIX plan is suspended |
| 403 | KEY_REVOKED | Key was revoked — mint a new one |
| 403 | PARTNER_SUSPENDED | Operator account suspended |
| 404 | TRADER_NOT_FOUND | externalId never sent through /auth/deriv/exchange |
| 404 | BROKER_DISCONNECTED | No Deriv tokens stored for this trader |
| 422 | MARKET_CLOSED | Includes secondsUntilOpen field |
| 422 | INVALID_CONTRACT | Bad barrier / duration / asset combo |
| 422 | INSUFFICIENT_BALANCE | Deriv reports trader account empty |
| 429 | RATE_LIMITED | Per-key or per-trader limit hit (Retry-After header) |
| 502 | BROKER_UPSTREAM | Unclassified Deriv error — retry; if persistent, escalate |
wss://api.varjix.com/v1/stream — live tick + order updates per trader, multiplexed over one socket.
order.opened · order.closed · account.connected — signed with your secret, never miss a settlement.
Subscribe your traders to verified VARJIX leaders. /v1/copy/leaders/{id}/subscribe.
/v1/ai/copilot/signal — VARJIX's signal engine on demand. Pay-per-call or bundled with Pro+.
/v1/app/revenue · /v1/app/traders — drop into your own analytics dashboard.
@varjix/sdk npm package, sandbox env, Mintlify interactive docs.
Flat monthly fee. You keep 100% of your markup. Your traders see your brand — VARJIX is invisible.