Skip to content

Retry & Reconciliation

Use retries for temporary failures, not for rejected or uncertain trading actions. If an order request may have reached Nubra or the exchange, check the latest order state before sending another request.

Safe to Retry

  • Read-only APIs such as instruments, holdings, funds, and historical data.
  • WebSocket reconnect and re-subscribe.
  • Rate-limit failures after the allowed wait window.
  • Temporary 500 or 503 errors where no order execution was attempted.

Unsafe to Retry

  • Order placement when the request timed out after reaching the OMS.
  • Modify or cancel when final order state is unknown.
  • RMS, margin, holdings, price band, aggressor limit, or lot-size rejection.
  • Validation failures.
  • Authentication failures before the session is repaired.

Retry Timing

Attempt 1 -> wait 1 sec
Attempt 2 -> wait 2 sec + jitter
Attempt 3 -> wait 5 sec + jitter
Stop -> reconcile or alert

Use a client reference, strategy tag, or idempotency key wherever available. This helps you detect the same trading intent if the network response is lost.

Order Status Check

Order timeout
   |
Check WebSocket order updates
   |
Query orderbook / recent orders
   |
Match by order_id, basket_id, strategy tag, symbol, side, qty, timestamp
   |
Found?
 |       |
Yes      No
 |       |
Update   Poll bounded times
state        |
             v
       Contact support if unresolved

Use this check for placement, modify, cancel, multi-order, and flexi-basket actions before sending a new request.

NEO Assistant