Skip to main content

Error Codes

API error responses and their meanings.

HTTP Status Codes

CodeDescription
200Success
201Created (signal executed)
202Accepted (signal scheduled)
400Bad Request (validation error)
401Unauthorized (invalid API key)
403Forbidden (insufficient permissions)
404Not Found
409Conflict (duplicate intent, opposing position, etc.)
429Rate Limited
500Internal Server Error
503Service Unavailable

Error Response Format

{
"error": "Error message",
"code": "ERROR_CODE",
"details": [
{
"path": ["field"],
"message": "Field-specific error"
}
]
}

Common Error Codes

CodeHTTPDescription
VALIDATION_ERROR400Request body failed validation
SIGNAL_REJECTED400Signal rejected (duplicate sourceId, etc.)
ACCOUNT_NOT_FOUND404Account ID not found or no access
STRATEGY_NOT_FOUND404Strategy ID not found or no access
INSUFFICIENT_FUNDS400Account has insufficient buying power
MARKET_CLOSED400Market is closed for this symbol
SERVICE_DISABLED503Signal processing is disabled
DUPLICATE_INTENT409A same-direction live signal already exists for this (accountId, strategyId, symbol, action). Response details.conflictingSignalId carries the id.
OPPOSING_POSITION_OPEN409The request would open the opposing side of an existing non-terminal trade for the same (account, symbol) on a netting broker (Alpaca, TradeStation). Response details.conflictingTradeId carries the existing trade id. Same-side stacking is allowed; opposite-side is not, because netting brokers cannot represent both sides at once. Close the conflicting trade to flat first, or route the strategy to a different account.
RECALC_WOULD_OVER_EXPOSE409Returned by the POST /api/v1/reconciliation/repair/{tradeId}/* endpoints (and the other reconciliation mutation paths) when rebuilding a trade's aggregates from its executions would push the sum of UTM open shares for the trade's (account, symbol, side) above the broker's gross open quantity on that side. The trade is not written. Response details.exceedsBy carries the projected delta and details.conflictingTradeIds lists the contributing trades sorted by openQuantity descending.