Skip to main content
POST
The response body shown here is a static example, not live data. After you click Send, your live result appears in a separate panel headed 200 OK. The panel under the status-code tabs is a fixed sample from the spec — its field values (fees, prices, sizes, IDs, timestamps) are placeholders. Use Send, or call the endpoint, for current values.
Arm, refresh, or disarm a per-subaccount dead man’s switch. If the deadline passes without a refresh, the gateway fires cancelAllOrders for the subaccount (account-wide). Keep the switch armed by posting a new time before the current deadline: each refresh is a full re-arm with an updated absolute epoch microseconds timestamp (typically now + 60s). Reusing a past deadline, or letting time elapse, does not extend the previous arm. Pass time to arm or refresh. Omit time (or send null) to disarm. Minimum lead is 5 seconds; maximum lead is 5 minutes. Successful auto-fires are capped at 10 per UTC day per subaccount (429 when exceeded).

Authorizations

X-API-Key
string
header
required

Hex-encoded Ed25519 public key (64 chars). The public key IS the API key — register it via POST /createApiKey. Required on every authenticated request, both read-only and signed.

X-Timestamp
string
header
required

Unix time in nanoseconds as a decimal string (e.g. "1713825891591000000"). Millisecond or second epochs are rejected with 401 Unauthorized. Must be within ±30,000 ms (MaxTimestampDriftMs, the drift window stays configured in milliseconds) of server wall-clock, or the request is rejected with 401 Unauthorized. Required on all mutating / credential-creating endpoints. This same value must appear as the ct field in the ordersign typed canonical payload (single-order endpoints) or in each element's ct field (batch endpoints).

X-Signature
string
header
required

Lowercase hex-encoded Ed25519 signature (128 chars).

Single-order endpoints (placeOrder, cancelOrder, modifyOrder, and other non-batch mutating routes) sign over the ordersign typed canonical payload — a compact, key-sorted JSON object built from parsed request fields using engine-native integer values:

ct must equal the X-Timestamp header value. Keys in brackets are conditional (omitted when empty). op values: 1=place, 2=cancel, 3=modify. See the ordersign package for field definitions and reference signing code.

Other signed routes (e.g. createApiKey, tokens, userPreferences) still use the legacy scheme: signing_message = X-Timestamp + ACTION + canonicalJSON(body), where ACTION is the camelCase final path segment.

Batch endpoints (batchPlaceOrders, batchCancelOrders, batchModifyOrders) do NOT use this header. They authenticate with per-element typed ordersign signatures embedded in the request body (see the global auth description and the per-field signature descriptions on OrderRequest / CancelOrderRequest / ModifyOrderRequest).

Read endpoints are authenticated by ?address= (and optionally X-API-Key) only — no signature is required. The one exception is GET /v1/affiliate/inviteCodes, which returns bearer secrets and therefore requires the full header triple; with no body its signing message is X-Timestamp + ACTION. canonicalJSON(body) is the JSON body with object keys sorted lexicographically at every level and no whitespace; the server canonicalizes the received body before verifying, so only the bytes signed over must be canonical. Required on all mutating / credential-creating endpoints.

Query Parameters

address
string
required

Master Ethereum address for this API key (must match address from POST /createApiKey for the same key). Required on REST for account-scoped reads and for place/cancel. Invalid hex → 400; mismatch with key → 403.

20-byte EVM address as hex: optional 0x or 0X prefix and exactly 40 hexadecimal digits. API responses normalize to lowercase af after 0x.

Pattern: ^(0x|0X)?[0-9a-fA-F]{40}$

Body

application/json

Arm, refresh, or disarm a per-subaccount dead-man cancel-all deadline. When time is present it must be an absolute epoch microseconds deadline between 5 seconds and 5 minutes in the future (inclusive). Each refresh must send a new time (a later absolute deadline) before the current one fires; omitting time (or sending null) disarms.

address
string
required

Master Ethereum address for this API key (must match ?address= if both are present).

accountIndex
integer
required
Required range: 0 <= x <= 9
time
integer<int64> | null

Absolute epoch microseconds when cancel-all fires if not refreshed. Each refresh must send a new later deadline (5s–5min ahead of now). Omit or null to disarm.

Response

Deadline armed, refreshed, or disarmed.

address
string
required
accountIndex
integer
required
Required range: 0 <= x <= 9
status
enum<string>
required
Available options:
scheduled,
disarmed
time
integer<int64> | null

Echoed deadline in epoch microseconds on arm/refresh; omitted on disarm.

rateLimit
object

Per-subaccount cancel-pool rate-limit snapshot after charging this ping. Omitted when rate limiting is not configured.