BSL Order Entry
BSL order entry exposes the hotpath result contract directly. Use it when a client needs deterministic, low-latency answers for place, cancel, replace, and quote-refresh flows.
JSON Batch
POST /api/v1/bsl/orders/batch
Content-Type: application/json
X-BSL-Result-Mode: full
Idempotency-Key: strategy-42-batch-9001
{
"resultMode": "full",
"actions": [
{
"payload": {},
"signature": "0x..."
}
]
}
The actions array contains signed actions. clientOrderId must be inside
the signed action payload when the client needs deterministic reconciliation by
client id.
Compact Batch
POST /api/v1/bsl/orders/compact
Content-Type: application/x-senticore-order-entry-batch
X-BSL-Result-Mode: ack
The body is the compact order-entry batch payload used by low-latency clients.
The response carries BSL metadata in x-bsl-* headers and keeps the body shape
compatible with existing compact clients.
Cancel and Replace
POST /api/v1/bsl/orders/replace
Content-Type: application/json
X-BSL-Result-Mode: full
Replace is modeled as one BSL result boundary. Clients should not infer success
from request acceptance alone. In full mode the response must be reconciled
from the engine result:
| Status | Client action |
|---|---|
filled | Position and exposure changed immediately. |
partially_filled | Continue quoting with updated leaves quantity. |
resting | New order is live on the book. |
canceled | Cancel side completed. |
rejected | Inspect rejectCode; do not assume old order is gone unless the result says so. |
Cancel by clientOrderId, mass-cancel per session, and
cancel-on-disconnect should use the same BSL session and private stream for
reconciliation.
Timing Fields
Every BSL response includes timing fields so clients can locate latency instead of guessing:
| Field | Meaning |
|---|---|
gatewayReceivedTs | Server ingress timestamp. |
authDoneTs | Auth and credential gate completed. |
riskDoneTs | Risk or credit approval completed when applicable. |
sequencedTs | Request entered sequencing. |
engineAppliedTs | Engine terminal event timestamp when available. |
durableTs | Durable acknowledgement timestamp when requested and reached. |
responseSentTs | Response emission timestamp. |
The durationsUs object carries microsecond breakdowns for auth, routing,
risk, enqueue, ack resolution, response emission, and total server time.
Client Rules
- Use
ackfor high-rate quote refreshes that reconcile from the stream. - Use
fullfor IOC/FOK, cancel, and replace. - Use
durableonly when persistence acknowledgement is more important than response latency. - Treat
Idempotency-Keyas the retry dedup key. - Treat
clientOrderIdas the strategy correlation id. - On
SHARD_BUSYorQUEUE_LIMIT, back off or reroute quoting for that market.