{
"type": "sandbox_deposit",
"requestId": "4e8b2d7f1a6c4f93b0d5e2a7c9f1b386",
"timestamp": 1792998000,
"payload": {
"amount": "1000.00",
"clientRef": "fund-2026-10-26-0001"
},
"signature": "5Hd8…"
}{
"type": "sandbox_withdraw",
"requestId": "9a1c6e3b7d2f4085a4c8e1b6d3f9a270",
"timestamp": 1792998300,
"payload": {
"amount": "250.00",
"clientRef": "withdraw-2026-10-26-0001"
},
"signature": "2Wq7…"
}{
"type": "ack",
"for": "sandbox_deposit",
"requestId": "4e8b2d7f1a6c4f93b0d5e2a7c9f1b386",
"traceId": "partners-rt-gw-8c3e1f6a-2d9b-4a75-b0e4-7f1c5d2a9e63",
"sentAt": "2026-10-26T14:20:01.318Z",
"payload": {
"clientRef": "fund-2026-10-26-0001",
"amount": "1000.00",
"currency": "USD",
"status": "PENDING"
}
}{
"type": "ack",
"for": "sandbox_withdraw",
"requestId": "9a1c6e3b7d2f4085a4c8e1b6d3f9a270",
"traceId": "partners-rt-gw-2f7a4c91-6e3d-4b08-a5c2-9d1e8b7f3a40",
"sentAt": "2026-10-26T14:25:00.744Z",
"payload": {
"clientRef": "withdraw-2026-10-26-0001",
"amount": "250.00",
"currency": "USD",
"status": "PENDING"
}
}{
"type": "error",
"requestId": "7a02c4e158b34f9da0e23c6b1d7f8e45",
"traceId": "partners-rt-gw-4d81e0a7-2c6f-4b19-9e3a-8f5d1c7b0a62",
"sentAt": "2026-08-28T15:29:47.012Z",
"payload": {
"code": "INVALID_ORDER",
"message": "The reference ref-2026-08-28-0001 already names an order (FILLED): look it up instead of placing it again"
}
}Sandbox only
Sandbox only: fund and withdraw your own cash. Not part of the production API.
MALFORMED. See Sandbox funding.{
"type": "sandbox_deposit",
"requestId": "4e8b2d7f1a6c4f93b0d5e2a7c9f1b386",
"timestamp": 1792998000,
"payload": {
"amount": "1000.00",
"clientRef": "fund-2026-10-26-0001"
},
"signature": "5Hd8…"
}{
"type": "sandbox_withdraw",
"requestId": "9a1c6e3b7d2f4085a4c8e1b6d3f9a270",
"timestamp": 1792998300,
"payload": {
"amount": "250.00",
"clientRef": "withdraw-2026-10-26-0001"
},
"signature": "2Wq7…"
}{
"type": "ack",
"for": "sandbox_deposit",
"requestId": "4e8b2d7f1a6c4f93b0d5e2a7c9f1b386",
"traceId": "partners-rt-gw-8c3e1f6a-2d9b-4a75-b0e4-7f1c5d2a9e63",
"sentAt": "2026-10-26T14:20:01.318Z",
"payload": {
"clientRef": "fund-2026-10-26-0001",
"amount": "1000.00",
"currency": "USD",
"status": "PENDING"
}
}{
"type": "ack",
"for": "sandbox_withdraw",
"requestId": "9a1c6e3b7d2f4085a4c8e1b6d3f9a270",
"traceId": "partners-rt-gw-2f7a4c91-6e3d-4b08-a5c2-9d1e8b7f3a40",
"sentAt": "2026-10-26T14:25:00.744Z",
"payload": {
"clientRef": "withdraw-2026-10-26-0001",
"amount": "250.00",
"currency": "USD",
"status": "PENDING"
}
}{
"type": "error",
"requestId": "7a02c4e158b34f9da0e23c6b1d7f8e45",
"traceId": "partners-rt-gw-4d81e0a7-2c6f-4b19-9e3a-8f5d1c7b0a62",
"sentAt": "2026-08-28T15:29:47.012Z",
"payload": {
"code": "INVALID_ORDER",
"message": "The reference ref-2026-08-28-0001 already names an order (FILLED): look it up instead of placing it again"
}
}Each client registers an Ed25519 public key with Securitize beforehand; the private key never leaves the client. hello, place_order, cancel_order, submit_crypto_funding, sandbox_deposit and sandbox_withdraw carry timestamp (Unix seconds) and signature = base58( Ed25519-Sign( privateKey, timestamp + "." + type + "." + payloadBytes ) ), where payloadBytes are the exact bytes of payload as sent on the wire. The timestamp must be within 30 seconds of the server clock. Other messages ride on the session hello opens.
Sandbox only. Moves USD from Securitize into your own cash. Signed.
Sandbox only. Moves USD out of your own cash. Signed.
Sandbox only. The deposit was requested, was requested before, was cancelled, or got no answer in time.
Sandbox only. The withdrawal was requested, was requested before, was cancelled, or got no answer in time.
A request was refused. Most errors leave the socket open.