{
"rid": 1,
"t": "p",
"s": "XAU-PERP",
"d": "B",
"q": 100,
"p": "50000.50",
"tif": "GTC",
"po": false,
"tag": "trade001",
"rb": "tbl",
"st": "CancelIncoming"
}{
"rid": 2,
"t": "x",
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV"
}{
"rid": 5,
"t": "X"
}{
"rid": 3,
"t": "r",
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"p": "50001.00"
}{
"rid": 4,
"t": "o"
}{
"rid": 6,
"t": "ef",
"symbol": "WTI-PERP"
}{
"rid": 0,
"res": {
"li": "user@example.com",
"o": [
{
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
}
],
"cod": false
},
"err": null
}{
"rid": 1,
"res": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV"
}
}{
"rid": 2,
"res": {
"cxl_rx": true
}
}{
"rid": 3,
"res": {
"oid": "O-01BX5ZZKBKACTAV9WEVGEMMVRE"
}
}{
"rid": 5,
"res": {}
}{
"rid": 3,
"res": {
"orders": [
{
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
{
"oid": "O-01BX5ZZKBKACTAV9WEVGEMMVRE",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAG-PERP",
"p": "32.505",
"q": 200,
"xq": 50,
"rq": 150,
"o": "PARTIALLY_FILLED",
"d": "S",
"tif": "GTC",
"ts": 1609459300,
"tn": 500000000
}
]
}
}{
"rid": 6,
"res": {
"symbol": "WTI-PERP",
"status": "ready",
"funding_rate": "0.00012",
"funding_amount": "6.00",
"benchmark_price": "50005.00",
"settlement_price": "50010.00",
"timestamp": "2021-01-01T00:00:00Z"
}
}{
"t": "h",
"ts": 1609459200,
"tn": 123456789
}{
"t": "e",
"ts": 1609459200,
"tn": 123456789,
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"cid": 12345,
"r": "ORDER_NOT_FOUND",
"txt": "Order not found or already canceled",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"cid": 12345,
"ts": 1609459200,
"tn": 0
}
}{
"t": "n",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
}
}{
"t": "c",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "CANCELED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"xr": "USER_REQUESTED",
"txt": "Canceled by user"
}{
"t": "r",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"no": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50100.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0,
"cid": 123456
},
"noid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"ro": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAS",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 0,
"o": "REPLACED",
"d": "B",
"tif": "GTC",
"ts": 1609459100,
"tn": 0,
"cid": 123456
}
}{
"t": "j",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "REJECTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"r": "INSUFFICIENT_MARGIN",
"txt": "Insufficient margin to place order"
}{
"t": "x",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "EXPIRED",
"d": "B",
"tif": "IOC",
"ts": 1609459200,
"tn": 0
}
}{
"t": "d",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 50,
"rq": 50,
"o": "DONE_FOR_DAY",
"d": "B",
"tif": "DAY",
"ts": 1609459200,
"tn": 0
}
}{
"t": "p",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 50,
"rq": 50,
"o": "PARTIALLY_FILLED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"xs": {
"tid": "T-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"s": "XAU-PERP",
"q": 50,
"p": "50000.00",
"d": "B",
"agg": false
}
}{
"t": "f",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 100,
"rq": 0,
"o": "FILLED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"xs": {
"tid": "T-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"s": "XAU-PERP",
"q": 100,
"p": "50000.00",
"d": "B",
"agg": true
}
}Websocket orders
Quickstart
1. Get a token
curl -s -X POST https://gateway.sandbox.architect.exchange/api/authenticate \
-H "Content-Type: application/json" \
-d '{"api_key":"YOUR_KEY","api_secret":"YOUR_SECRET","expiration_seconds":3600}'
# Response: {"token":"<bearer-token>"}
2. Connect to the WebSocket
Pass the token as anAuthorization header on the WebSocket upgrade request. Invalid or missing tokens are rejected with HTTP 401 before the connection is established.
# Store the token
TOKEN=$(curl -s -X POST https://gateway.sandbox.architect.exchange/api/authenticate \
-H "Content-Type: application/json" \
-d '{"api_key":"YOUR_KEY","api_secret":"YOUR_SECRET","expiration_seconds":3600}' \
| python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")
# Connect
wscat -c wss://gateway.sandbox.architect.exchange/orders/ws \
-H "Authorization: Bearer $TOKEN"
# Store the token
TOKEN=$(curl -s -X POST https://gateway.sandbox.architect.exchange/api/authenticate \
-H "Content-Type: application/json" \
-d '{"api_key":"YOUR_KEY","api_secret":"YOUR_SECRET","expiration_seconds":3600}' \
| python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")
# Connect
websocat -H="Authorization: Bearer $TOKEN" \
wss://gateway.sandbox.architect.exchange/orders/ws
gateway.sandbox.architect.exchange with gateway.architect.exchange for production.
3. Login response
On successful connection, the server sends a login response withrid: 0 containing your open orders:
{"rid":0,"res":{"li":"user@example.com","o":[]},"err":null}
4. Place an order
{"rid":1,"t":"p","s":"XAU-PERP","d":"B","q":100,"p":"50000.50","tif":"GTC","po":false}
{"rid":1,"res":{"oid":"O-01ARZ3NDEKTSV4RRFFQ69G5FAV"}}
t="n", filled t="f", canceled t="c", rejected t="j").
Cancel on Disconnect
To automatically cancel all orders placed during a WebSocket session when the connection drops, pass thecancel_on_disconnect query parameter when opening the connection:
var ws = new WebSocket(
'wss://gateway.sandbox.architect.exchange/orders/ws?cancel_on_disconnect=true'
);
wscat -c "wss://gateway.sandbox.architect.exchange/orders/ws?cancel_on_disconnect=true" \
-H "Authorization: Bearer $TOKEN"
websocat -H="Authorization: Bearer $TOKEN" \
"wss://gateway.sandbox.architect.exchange/orders/ws?cancel_on_disconnect=true"
Estimated funding rate
Request the live estimated funding rate for a symbol with at="ef" message:
{"rid":6,"t":"ef","symbol":"WTI-PERP"}
rid:
{"rid":6,"res":{"symbol":"WTI-PERP","status":"ready","funding_rate":"0.00012","funding_amount":"6.00","benchmark_price":"50005.00","settlement_price":"50010.00","timestamp":"2021-01-01T00:00:00Z"}}
status is one of ready, settlement_pending, or unavailable. The numeric fields are populated only when status is ready; otherwise res.reason explains why no estimate is available. The same estimate is also published on the market data ticker stream — see Websocket marketdata.{
"rid": 1,
"t": "p",
"s": "XAU-PERP",
"d": "B",
"q": 100,
"p": "50000.50",
"tif": "GTC",
"po": false,
"tag": "trade001",
"rb": "tbl",
"st": "CancelIncoming"
}{
"rid": 2,
"t": "x",
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV"
}{
"rid": 5,
"t": "X"
}{
"rid": 3,
"t": "r",
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"p": "50001.00"
}{
"rid": 4,
"t": "o"
}{
"rid": 6,
"t": "ef",
"symbol": "WTI-PERP"
}{
"rid": 0,
"res": {
"li": "user@example.com",
"o": [
{
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
}
],
"cod": false
},
"err": null
}{
"rid": 1,
"res": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV"
}
}{
"rid": 2,
"res": {
"cxl_rx": true
}
}{
"rid": 3,
"res": {
"oid": "O-01BX5ZZKBKACTAV9WEVGEMMVRE"
}
}{
"rid": 5,
"res": {}
}{
"rid": 3,
"res": {
"orders": [
{
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
{
"oid": "O-01BX5ZZKBKACTAV9WEVGEMMVRE",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAG-PERP",
"p": "32.505",
"q": 200,
"xq": 50,
"rq": 150,
"o": "PARTIALLY_FILLED",
"d": "S",
"tif": "GTC",
"ts": 1609459300,
"tn": 500000000
}
]
}
}{
"rid": 6,
"res": {
"symbol": "WTI-PERP",
"status": "ready",
"funding_rate": "0.00012",
"funding_amount": "6.00",
"benchmark_price": "50005.00",
"settlement_price": "50010.00",
"timestamp": "2021-01-01T00:00:00Z"
}
}{
"t": "h",
"ts": 1609459200,
"tn": 123456789
}{
"t": "e",
"ts": 1609459200,
"tn": 123456789,
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"cid": 12345,
"r": "ORDER_NOT_FOUND",
"txt": "Order not found or already canceled",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"cid": 12345,
"ts": 1609459200,
"tn": 0
}
}{
"t": "n",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
}
}{
"t": "c",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "CANCELED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"xr": "USER_REQUESTED",
"txt": "Canceled by user"
}{
"t": "r",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"no": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50100.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "ACCEPTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0,
"cid": 123456
},
"noid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"ro": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAS",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 0,
"o": "REPLACED",
"d": "B",
"tif": "GTC",
"ts": 1609459100,
"tn": 0,
"cid": 123456
}
}{
"t": "j",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "REJECTED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"r": "INSUFFICIENT_MARGIN",
"txt": "Insufficient margin to place order"
}{
"t": "x",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 0,
"rq": 100,
"o": "EXPIRED",
"d": "B",
"tif": "IOC",
"ts": 1609459200,
"tn": 0
}
}{
"t": "d",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 50,
"rq": 50,
"o": "DONE_FOR_DAY",
"d": "B",
"tif": "DAY",
"ts": 1609459200,
"tn": 0
}
}{
"t": "p",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 50,
"rq": 50,
"o": "PARTIALLY_FILLED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"xs": {
"tid": "T-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"s": "XAU-PERP",
"q": 50,
"p": "50000.00",
"d": "B",
"agg": false
}
}{
"t": "f",
"ts": 1609459200,
"tn": 123456789,
"eid": "E-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"o": {
"oid": "O-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"u": "550e8400-e29b-41d4-a716-446655440000",
"s": "XAU-PERP",
"p": "50000.00",
"q": 100,
"xq": 100,
"rq": 0,
"o": "FILLED",
"d": "B",
"tif": "GTC",
"ts": 1609459200,
"tn": 0
},
"xs": {
"tid": "T-01ARZ3NDEKTSV4RRFFQ69G5FAV",
"s": "XAU-PERP",
"q": 100,
"p": "50000.00",
"d": "B",
"agg": true
}
}Bearer token authentication using user/session tokens from /api/get_user_token.
To connect to the WebSocket, include the Authorization header:
Authorization: Bearer <token>
Request to place a new order (t="p")
Request to cancel an existing order (t="x"). Exactly one of oid or cid must be provided.
Request to cancel all open orders (t="X")
Request to cancel and replace an existing order with a new order (t="r"). Exactly one of oid or cid must be provided. The replacement order inherits the original's client order ID (cid).
Request to retrieve all open orders (t="o")
Request the live estimated funding rate for a symbol (t="ef")
Initial response upon WebSocket connection (rid=0)
Response to place order request
Response to cancel order request
Response to replace order request
Response to cancel all orders request
Response to get open orders request
Response to get estimated funding rate request
Heartbeat/timestamp event (t="h")
Order cancel request was rejected (t="e")
Order has been acknowledged by the exchange (t="n")
Order has been canceled (t="c")
Order has been replaced or amended (t="r")
Order has been rejected (t="j")
Order has expired (t="x")
Order is done for the day (t="d")
Order has been partially filled (t="p")
Order has been completely filled (t="f")