Errors
The Canon API uses standard HTTP status codes and returns structured JSON error responses.
Error Response Format
{
"error": "error_code",
"message": "Human-readable description of the error"
}
HTTP Status Codes
| Code | Meaning | Description |
|---|---|---|
200 | OK | Request succeeded |
400 | Bad Request | Invalid request parameters |
401 | Unauthorized | Missing or invalid API key |
429 | Too Many Requests | Rate limit exceeded |
502 | Bad Gateway | Upstream data source unavailable |
504 | Gateway Timeout | Risk computation timed out |
Validation Errors (400)
Returned when request parameters fail validation.
{
"error": "invalid_asset",
"message": "Asset 'FAKECOIN' is not available"
}
| Error Code | Description |
|---|---|
invalid_asset | Asset not found or not available on Hyperliquid |
invalid_wallet | Wallet address is not a valid 42-character hex address |
invalid_size | Position size is not positive |
size_too_large | Position size exceeds $100M maximum |
leverage_exceeded | Requested leverage exceeds the asset's maximum |
asset_delisted | Asset has been delisted and is no longer tradeable |
isolated_only | Asset only supports isolated margin; cross margin was requested |
batch_too_large | Batch request exceeds 50 trades |
batch_empty | Batch request contains no trades |
Upstream Errors (502)
Returned when Canon cannot fetch required data from the exchange.
{
"error": "wallet_state_unavailable",
"message": "Unable to fetch wallet state from Hyperliquid"
}
Timeout Errors (504)
Returned when risk computation exceeds the 10-second timeout.
{
"error": "timeout",
"message": "Risk computation timed out"
}
This is rare and typically indicates extreme exchange-side latency. Retry after a brief delay.