Submit BSL compact action batch
POST/api/v1/bsl/orders/compact
Operational contract
This is the BSL compact facade for latency-sensitive signed action batches. Each action inside the batch still carries its own account action signature. Machine auth only authorizes the transport and business-line access.
| Requirement | Value |
|---|---|
| Agent type | institutional_agent; a standard api_agent is rejected for BSL submit. |
| Scopes | quote for quote/replace, cancel for cancels, read for protected reads. |
| Transport auth | SC-Auth-Version: 2 HMAC headers, or a provisioned X-Senticore-Order-Entry-Key where the beta bundle allows it. |
| Body | Compact SDK batch bytes or compact JSON bytes, depending client encoder. |
| Content type | Prefer application/x-senticore-order-entry-batch; application/x-senticore-bsl-batch is accepted for BSL-specific clients. |
| Response mode | Start with X-BSL-Result-Mode: ack and X-Senticore-Response-Mode: detailed. |
HTTP 200 means the edge accepted the envelope. It does not guarantee every
action made the book. Inspect ok, derivedOrderIds[], actionResults[],
receipts, and drop-copy before treating the order as live.
QuoteReplace example payload
Outcome markets use QuoteReplace and include book. Spot markets use
SpotQuoteReplace and omit book.
{
"version": 1,
"actions": [
{
"payload": {
"account": "0x2222222222222222222222222222222222222222",
"nonce": 0,
"nonce_reservation_id": null,
"ts": 1765500000000,
"action": {
"QuoteReplace": {
"market": 1,
"legs": [
{
"cancel_order_id": null,
"book": "YES",
"side": "Bid",
"price": 100000,
"qty": 100000,
"stp_mode": "skip_self",
"time_in_force": "post_only",
"is_market": false,
"reduce_only": false,
"expires_at": null
}
]
}
}
},
"signature": {
"scheme": "EcdsaSecp256k1",
"bytes": ["..."]
}
}
],
"idempotencyKey": "quote-1-yes-bid-0"
}
Expected accepted response
{
"ok": true,
"ackMode": "ack",
"seqs": [12345],
"derivedOrderIds": [
"0xfeac5884704773dd3150bef258b3f5a139dafaba0bba2190fc9d520b8a505e22"
]
}
Expected risk reject response
{
"ok": false,
"seqs": [],
"responseMode": "detailed",
"acceptedActions": 0,
"error": "risk approval rejected request: account would exceed available usdc under spot risk: current_required=0 projected_required=10000 available=0",
"actionResults": [
{
"seq": 0,
"status": "rejected",
"rejectCode": "INSUFFICIENT_BALANCE",
"rejectReason": "risk approval rejected request: account would exceed available usdc under spot risk: current_required=0 projected_required=10000 available=0",
"risk": {
"asset": "USDC",
"free": "0",
"locked": "0",
"required": "10000",
"account": "0x2222222222222222222222222222222222222222",
"market": 1,
"book": null
}
}
]
}
For nonce rejects, resync with
GET /api/v1/accounts/:engineAccount/bootstrap?fresh=true, use
nonceFloor, stay within nonceFloor <= nonce < nonceFloor + nonceWindow,
and rebuild plus re-sign the action. Changing only Idempotency-Key cannot
fix an action nonce failure.
Canonical compact byte order-entry facade for latency-sensitive quote engines. Each action in the batch still carries a signed action payload. Use an institutional_agent HMAC credential with quote scope, or a provisioned dedicated order-entry lane key where the beta bundle allows it. HTTP 200 is an envelope/admission result; inspect actionResults[], receipts, streams, and drop-copy for terminal state.
Request
Responses
- 200
- 400
- 401
- 403
- 409
- 413
- 415
- 429
- 503
- default
BSL compact batch result
Error response. Prefer the nested ApiErrorResponse via X-SC-Error-Format: envelope-v1; existing unnegotiated handler responses can retain a documented legacy flat shape through the compatibility period.
Response Headers
Stable request correlation id generated or echoed by the server.
Error response. Prefer the nested ApiErrorResponse via X-SC-Error-Format: envelope-v1; existing unnegotiated handler responses can retain a documented legacy flat shape through the compatibility period.
Response Headers
Stable request correlation id generated or echoed by the server.
Error response. Prefer the nested ApiErrorResponse via X-SC-Error-Format: envelope-v1; existing unnegotiated handler responses can retain a documented legacy flat shape through the compatibility period.
Response Headers
Stable request correlation id generated or echoed by the server.
Nonce, idempotency, order-state, or risk conflict
Error response. Prefer the nested ApiErrorResponse via X-SC-Error-Format: envelope-v1; existing unnegotiated handler responses can retain a documented legacy flat shape through the compatibility period.
Response Headers
Stable request correlation id generated or echoed by the server.
Error response. Prefer the nested ApiErrorResponse via X-SC-Error-Format: envelope-v1; existing unnegotiated handler responses can retain a documented legacy flat shape through the compatibility period.
Response Headers
Stable request correlation id generated or echoed by the server.
Admission budget exceeded. Honor Retry-After and the X-RateLimit-* headers before retrying.
Response Headers
Stable request correlation id generated or echoed by the server.
Delay in seconds before another admission attempt. Only emitted on responses that have a known retry delay.
Configured action budget for the current rate-limit window.
Remaining actions in the current rate-limit window.
Milliseconds until the current action rate-limit window resets.
Inferred quota values describe fallback signalling, not measured account capacity.
Temporary admission/readiness or queue-capacity failure. Honor Retry-After; reconcile accepted work before retrying.
Response Headers
Stable request correlation id generated or echoed by the server.
Delay in seconds before another admission attempt. Only emitted on responses that have a known retry delay.
Configured action budget for the current rate-limit window.
Remaining actions in the current rate-limit window.
Milliseconds until the current action rate-limit window resets.
Inferred quota values describe fallback signalling, not measured account capacity.
Error response. Prefer the nested ApiErrorResponse via X-SC-Error-Format: envelope-v1; existing unnegotiated handler responses can retain a documented legacy flat shape through the compatibility period.
Response Headers
Stable request correlation id generated or echoed by the server.