FAQ
Access and keys
Is there a testnet or sandbox?
No — production only, for now. Safe on-ramp: start with a read-tier key (it physically cannot
trade), then trade tiny amounts, and fence real keys with
risk shields.
Which subscription do I need for API access? Keys are created in the LEXX Terminal; availability depends on your plan — see billing (profile → settings → billing) or lexx-trade.com. Request budgets are described in Rate limits.
How many API keys can I have? Up to 10 active keys per account. Best practice: one key per application/bot (why).
What does full give me over trade?
Today — nothing in the Public API: no endpoint requires more than trade. Key management
lives only in the Terminal UI.
Can I create or revoke keys via the API? No, by design: keys are managed only in the Terminal UI, so a leaked key can never mint new keys.
Signing and errors
I get 401 with “Duplicate request signature” — why?
You re-sent an identical timestamp+signature (typical in a retry loop). Every attempt —
including automatic retries — must be re-signed with a fresh timestamp; a timestamp+
signature pair is single-use
(details).
INVALID_SIGNATURE and I can’t see why.
Top three causes, in order: (1) you signed the path from /api/v2/... — it must start at
/v2/...; (2) you forgot the query string; (3) the body you signed isn’t byte-identical to the
body you sent (pretty-print, re-serialization). Full checklist and a
test vector to verify your crypto in one minute.
TIMESTAMP_EXPIRED keeps happening.
Your clock is off by more than 5 s. Fix NTP, or take the offset from GET /server/time at
startup — both reference clients do this.
How do I retry order creation safely after a timeout?
Same X-Idempotency-Key, fresh signature, retry. Whatever happened during the timeout, you end
up with exactly one order — the full pattern is
placeOrderReliably.
Orders and data
Where do I get the order history from last week?
As orders — nowhere: GET /orders serves a live cache (open + closed within ~1 hour). Older
activity is available as fills via
GET /orders/trades — one order may map to
several fills.
Where is the market data (orderbook, candles, tickers)? Not in this API — it is deliberately about your account. Use the exchanges’ public APIs for market data (what the API does not do).
Is there a WebSocket stream of my fills?
No fill-level events. Fills arrive aggregated inside ORDER_UPDATE (executedQty,
fillPrice); per-execution history is REST
(why).
My WebSocket subscription was confirmed but delivers nothing.
Almost certainly the silent-subscription trap:
an unsupported filter combination (e.g. symbol without exchange, or any filter on
botStatus) is ACKed but never matches. Fix the filters and re-subscribe.
Why are all amounts strings? JSON numbers are floats; money in floats loses cents. Parse with decimal types; the one documented exception (non-money bot configuration knobs) returns plain numbers (Conventions).
Bots
I created a bot but it won’t start / goes ERROR.
Creation validates only type and settings.exchange — everything else is checked when the
bot is built (deep validation). Usual suspects: FIBO
without the mandatory "0"/"1" channels, depositePercent not summing to 100, wrong
symbol shape or timeFrame units for the type
(shapes table).
Can I change a running bot’s config?
Not via PATCH — stop it first (PATCH on a running bot returns 409), or use restart: true
to apply-and-restart in one call. For live adjustments without stopping, use the
runtime commands:
stop-losses can be added/updated on the fly.
How do I stop a bot and liquidate its position at once?
DELETE /bots/{id}/runs/{runId}?cleanup=cancelAllOrders&action=stop_and_sell — cancels the
bot’s open orders and market-sells the remainder
(lifecycle).
How do I start 15 bots without burning my rate limit?
POST /bots/batch/runs —
up to 20 bots in one request, one unit of rate limit, per-bot results in the response.
Limits
I keep hitting 429. What’s the right reaction?
Wait exactly Retry-After seconds, then retry with a fresh signature. Better: watch
X-RateLimit-Remaining and slow down before the wall
(self-throttling).
Do WebSocket messages count against my REST limits? No — the WebSocket has its own fixed backstops (200 msgs / 10 s per socket etc.), not scaled by subscription (WS limits). That is one more reason to prefer streams over polling.
When something is broken
I think my key leaked. Revoke first, investigate second — the incident runbook is five steps.
I found a bug / the API behaves differently from these docs.
File a ticket via the support portal support.lexx-trade.com
(the “Contact us” widget) or email support@lexx-trade.com, with the meta.requestId, the
endpoint and the timestamp. The requestId lets the team find
your exact request (contacting support).
Verified against API spec v2.0.0 · 2026-07-12