Create an algo instance
Creates an instance of a loaded algo version with its config document in the same request (algos:manage). The document is validated before anything exists — grammar, the version’s schema, its account and instrument references; a refusal is 422, naming the field. Answers 201 — the guide.
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Headers
Required on every write: a URL-safe string of 1 to 64 characters from [A-Za-z0-9._~-] (a UUID fits), scoped to you. It names one operation on one record, ever: a retry replays the stored outcome (Idempotent-Replay: true) or attaches to the live one, and reuse on another record refuses 409 IDEMPOTENCY_KEY_REUSED. Missing or malformed, 400.
Request
The loaded algo version to instantiate — a catalog row.
The engine pool the instance runs on, by name — the algo-engine- prefix and a tier, at most 64 printable ASCII characters without a space; fixed at creation.
The instance's display name, at most 64 bytes of UTF-8.
Why — required on every change, at most 256 bytes of UTF-8.
The initial config document: JSON with comments, one object the version's params schema types whole, its accounts and instruments among its values as typed references — each an id, or through the trading gateway a name (an account's display name, an instrument's platform symbol such as OKX@BTC/USDT), which the gateway replaces with the id it names before the command is sent, keeping the name beside it as a comment where it fits; at most 6144 bytes of UTF-8 as written and as sent, and its distinct references at most 1280 bytes, 4 an account and 8 an instrument.
The command's idempotency key, 1 to 64 characters of letters, digits, dot, underscore, tilde and hyphen; a replay restates the earlier answer.
Response
The instance exists, with its first document staged: the created row, CREATED until the engine applies the document — with the position of the second of the two changes the create landed, the row's ETag (configSeq, 1) and, on a replayed key, Idempotent-Replay.
The catalog version the instance runs (GET /algos/versions).
The document in force; 0 while none has been applied.
The latest staged document's sequence number — the ETag, and what If-Match takes on a config write.
When it was created — epoch nanoseconds as a decimal string.
The position as a decimal string — the last change this member had applied, orders, balance readings and algo instances included.
The instance's id — the value its orders carry as algoInstanceId.
Why it last moved: a command, the organisation's halt, its first document applied, the engine's fault trip, or the engine's divergence check. The value set is append-only: read an unknown name as UNKNOWN.
The command behind the last move — a desk's, or the engine's report that moved it. The value set is append-only: read an unknown name as UNKNOWN.
When it last moved — epoch nanoseconds as a decimal string.
Where the instance stands: CREATED until its first document is applied, STOPPED or STARTED under the desk, ERROR after the engine's fault trip (left only by a stop), DELETED terminal. PENDING_APPROVAL and DISABLED are reserved and never served today. The value set is append-only: read an unknown name as UNKNOWN.
The instance's transition number: 1 at creation, one more on every move.
The user whose command last moved the instance; null when the engine or the platform's own rule did — lastCause says which.
Reserved; always null.
Never present since 0.3.3: every money value on this API states its own scale on the wire — a policy amount or cap since 0.3.3, an order's and an execution's since 0.3.2, a balance's since 0.3.1 — so a row is never served raw, whether or not this member holds the asset or instrument it references. Kept, deprecated, so a client generated from 0.3.2 still compiles; it goes at the next major.