Skip to main content
POST
Register a simulated test account

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

The account to register. All values shown are placeholders.

Registers a simulated paper account. Timing fields are optional; other fields are required.

enabled
boolean
required

Whether the scheduler should start it.

name
string
required

What to call it. Must not be blank.

organization_id
string<uuid>
required

Organization the account trades for. Internal organization admins must name their own organization.

trading_account_id
string<uuid>
required

Caller-supplied account ID. Must not already identify a real or simulated account.

ack_latency_ms
integer<int32> | null

Nonnegative acknowledgement delay in milliseconds. Defaults to 10.

fill_max_ms
integer<int32> | null

Nonnegative maximum fill delay in milliseconds. Defaults to 100.

fill_min_ms
integer<int32> | null

Nonnegative minimum fill delay in milliseconds. Defaults to 5 and must not exceed fill_max_ms.

Response

Test account registered

The registered test account, echoed back in full.

The whole row rather than just its id, because the request may have left the simulator's timings out and the operator needs to see which defaults they got without a second call.

test_account
object
required

A simulated trading account, registered by an operator for load testing.

Not a [TradingAccount] with a flag on it, and deliberately so. A trading account is a customer's broker connection: it has a broker, a credential, an append-only event stream behind it and a six year retention obligation. This has none of those. It is a row an operator adds to make the platform trade against an in-process simulator, and removes again afterwards.

Keeping the two types apart is what lets GET /v1/accounts answer one question at a time: without test_accounts=true it lists real accounts and cannot accidentally include one of these, and with it, it lists only these. A shared type carrying a boolean would have made every caller responsible for checking that boolean, and the cost of one forgetting is a customer's orders going to a simulator.