This document provides a comprehensive reference for all error codes and messages you may encounter when using SignalBee. Use Ctrl+F to search for specific error messages.
Signal History Page
View all received signals and their processing status:
- Status:
success, rejected, or failed
- Reason: Machine-readable code (e.g.,
duplicate_signal)
- Message: Human-readable explanation
- Click on any signal to see full details
Order History Page
View all orders and their execution results:
- Status:
filled, failed, or cancelled
- Error Message: Exchange-provided error details for failed orders
- Exchange Response: Raw response from the exchange API
Test your webhook configuration before going live:
- Shows validation results for all fields
- Simulates order execution without placing real orders
- Displays balance and size limit checks
These errors occur when your webhook payload fails validation. Fix your TradingView alert message or webhook configuration.
| Field | Error Message | Cause | Solution |
|---|
webhook_secret | webhook_secret is required | Missing or empty webhook_secret in JSON payload | Add "webhook_secret": "your-secret" to your alert message |
side | side is required | Missing side field | Add "side": "buy", "side": "sell", or "side": "close" |
side | side must be 'buy', 'sell', or 'close' | Invalid value for side | Use exactly buy, sell, or close (case-insensitive) |
symbol | symbol is required | Missing symbol field | Add "symbol": "BTC-USDT" with your trading pair |
symbol | symbol must be in canonical format BASE-QUOTE (e.g., BTC-USDT) | Invalid symbol format | Use canonical format with hyphen separator (e.g., BTC-USDT, ETH-USDT) |
quantity_type | quantity_type is required | Missing quantity_type field | Add "quantity_type": "fixed" or "quantity_type": "percentage" |
quantity_type | quantity_type must be 'fixed' or 'percentage' | Invalid quantity type | Use exactly fixed or percentage |
quantity | quantity is required and must be greater than zero | Missing or zero quantity | Add positive value like "quantity": 0.001 or "quantity": 50 |
quantity | quantity must be greater than zero | Negative quantity value | Use a positive number |
quantity | quantity must be between 0 and 100 when quantity_type is 'percentage' | Percentage out of range | Use value between 1 and 100 (e.g., "quantity": 50 for 50%) |
signal_price | signal_price must be greater than zero | Negative or zero signal price | Remove field or use positive value |
quantity | quantity exceeds maximum allowed value of 1 trillion | Quantity value too large | Use a reasonable quantity value |
source_timestamp | source_timestamp is required | Missing source_timestamp field | Add "source_timestamp": "{{timenow}}" using TradingView's time placeholder |
source_timestamp | source_timestamp is too old (must be within 5 minutes) | Stale timestamp | Ensure timestamp is recent |
source_timestamp | source_timestamp is too far in the future (must be within 5 minutes) | Future timestamp | Fix clock sync or use current time |
{
"webhook_secret": "your-webhook-secret",
"side": "buy",
"symbol": "BTC-USDT",
"quantity_type": "percentage",
"quantity": 50,
"source_timestamp": "{{timenow}}"
}
These errors are returned in the HTTP response when your webhook request fails.
| Error Code | HTTP Status | Message | Cause | Solution |
|---|
missing_webhook_id | 400 | Webhook ID not found in context | Webhook ID missing from URL path | Check your webhook URL is correct |
invalid_webhook | 400 | Invalid webhook | Webhook ID is not a valid UUID or does not exist | Verify your webhook URL from the SignalBee dashboard |
webhook_disabled | 403 | This webhook is disabled | Webhook exists but is disabled | Enable the webhook in the SignalBee dashboard |
invalid_body | 400 | Failed to read request body | Request body could not be read | Check your alert message is valid text |
invalid_json | 400 | Invalid JSON format | JSON parsing failed | Validate your JSON syntax (use a JSON validator) |
validation_error | 400 | (field-specific message) | One or more fields failed validation | See Signal Validation Errors section above |
unauthorized | 401 | Invalid webhook secret | webhook_secret doesn't match any of your webhooks | Copy the correct secret from SignalBee webhooks page |
payload_too_large | 413 | Request payload too large | Request body exceeds maximum size | Reduce payload size (max 64KB) |
queue_full | 503 | System at capacity | Signal queue is full due to high load | Retry in 30 seconds |
enqueue_failed | 500 | Failed to queue signal | Internal error while queuing signal | Retry later; contact support if persistent |
internal_error | 500 | Internal server error | Unexpected server-side failure | Retry later; contact support if persistent |
Accepted Response (HTTP 202):
{
"status": "queued",
"signal_id": "uuid",
"message": "Signal accepted for processing"
}
Note: Production webhooks are processed asynchronously. A 202 response means the signal was accepted and queued for execution. Use the /webhook/test/{user_id} endpoint for synchronous validation and testing.
Test Endpoint Response (HTTP 200):
The test endpoint (/webhook/test/{user_id}) returns the full order result synchronously:
{
"status": "success",
"message": "Order would be executed successfully",
"signal_id": "uuid",
"order_id": "uuid",
"exchange": "binance",
"order_side": "BUY",
"quantity": "0.001",
"price": "45000.00",
"reason": ""
}
Rejected/Failed Response (from test endpoint):
{
"status": "rejected",
"message": "Trading pair not whitelisted",
"signal_id": "uuid",
"reason": "pair_not_whitelisted"
}
Error Response (validation error):
{
"status": "error",
"error": "validation_error",
"message": "side: side must be 'buy', 'sell', or 'close'"
}
Error Response (queue full):
{
"status": "error",
"error": "queue_full",
"message": "System at capacity, please retry in 30 seconds"
}
Rejections occur before SignalBee attempts to execute on the exchange. Your signal was received but could not be processed due to your configuration.
| Reason Code | Message | Cause | Solution |
|---|
duplicate_signal | Duplicate signal detected | Same signal received twice within 5 minutes | Wait before retrying; this is a protection against duplicate orders |
webhook_disabled | This webhook is disabled | Individual webhook toggle is off | Enable the webhook in SignalBee |
trading_disabled | Trading is disabled for exchange '{exchange}' | Per-exchange trading toggle is off | Enable trading for the exchange in Exchanges settings |
pair_not_whitelisted | Trading pair {symbol} is not whitelisted | Symbol not in your allowed pairs list | Add the trading pair to your whitelist |
order_exceeds_max_size | Order value ${value} exceeds maximum order size ${max} | Order value exceeds your configured limit | Reduce quantity or increase max order size limit |
Failures occur during execution when SignalBee encounters an error communicating with the exchange or processing your order.
| Reason Code | Message | Cause | Solution |
|---|
credentials_missing | Failed to get credentials for exchange '{exchange}' | No API credentials saved for this exchange | Add exchange credentials in Exchanges page |
api_key_decrypt_failed | Failed to decrypt API key | Internal encryption error with API key | Re-enter your API credentials |
api_secret_decrypt_failed | Failed to decrypt API secret | Internal encryption error with API secret | Re-enter your API credentials |
passphrase_decrypt_failed | Failed to decrypt passphrase | Internal encryption error with passphrase | Re-enter your passphrase in exchange settings |
client_creation_failed | Failed to create exchange client | Could not connect to exchange | Check exchange status; retry later |
invalid_credentials | Invalid {exchange} API credentials | API key or secret is wrong | Re-enter correct API credentials from exchange |
price_query_failed | Failed to get price | Could not fetch current market price | Check symbol exists; exchange may be down |
balance_query_failed | Failed to query account balance | Could not retrieve balance from exchange | Check API key permissions include "Read" |
quantity_calculation_failed | Failed to calculate order quantity | Error calculating order size | Check percentage is valid; balance may be zero |
value_calculation_failed | Failed to calculate order value | Could not determine USD value | Exchange price feed may be unavailable |
invalid_symbol_format | Unknown symbol format {symbol} | Could not parse trading pair symbol | Use canonical format BASE-QUOTE (e.g., BTC-USDT) |
asset_not_found | Asset {asset} not found in balance | Asset from symbol not in your exchange balance | Verify symbol is correct; the base/quote asset may not exist on this exchange |
insufficient_balance | Insufficient {asset} balance: required {required}, available {available} | Not enough funds | Deposit more funds to your exchange account |
rate_limit_exceeded | Rate limit exceeded | Too many requests to exchange | Wait and retry; reduce signal frequency |
exchange_unavailable | Exchange temporarily unavailable | Exchange API is down | Check exchange status page; retry later |
order_execution_failed | Order execution failed: {error} | Exchange rejected the order | See Exchange Errors section below |
These errors occur when SignalBee cannot communicate with your exchange.
| Error | Cause | Solution |
|---|
| Invalid API key | API key doesn't exist or was deleted on exchange | Generate a new API key on your exchange and update in SignalBee |
| Invalid signature | API secret is incorrect | Re-enter the correct API secret |
| API key has expired | Some exchanges expire keys periodically | Generate a new API key on your exchange |
| Permission denied | API key missing required permissions | Enable "Spot Trading" and "Read" permissions on exchange |
| IP not whitelisted | Exchange requires IP whitelisting | Add SignalBee's IP addresses or disable IP restrictions |
If your exchange requires IP whitelisting, add these IPs:
- Contact support for current IP addresses (these may change)
- Alternatively, disable IP restrictions on your exchange API key
| Error | Cause | Solution |
|---|
| Connection timeout | Network issues or exchange is slow | Retry; check exchange status |
| Exchange unavailable | Exchange API is down for maintenance | Wait for exchange to come back online |
| Rate limit exceeded | Too many API requests | Reduce signal frequency; wait before retrying |
These errors are returned by the exchange when your order cannot be placed.
| Error Type | Message | Cause | Solution |
|---|
insufficient_balance | Insufficient balance | Not enough funds in your exchange account | Deposit more funds or reduce order size |
min_notional | Order value below minimum notional | Order value is too small (often <$10 or <$5) | Increase order size to meet exchange minimum |
quantity_too_small | Order quantity below minimum | Quantity is below exchange's minimum lot size | Increase quantity to meet minimum |
quantity_too_large | Order quantity above maximum | Quantity exceeds exchange's maximum | Reduce quantity |
| Error Type | Message | Cause | Solution |
|---|
invalid_symbol | Invalid symbol | Trading pair doesn't exist on this exchange | Check the exact symbol format for your exchange |
| Market not trading | Market is suspended or delisted | Pair temporarily unavailable | Wait or choose a different trading pair |
| Error Type | Message | Cause | Solution |
|---|
price_too_low | Price below minimum | Limit price too far below market | Adjust limit price closer to market |
price_too_high | Price above maximum | Limit price too far above market | Adjust limit price closer to market |
order_would_match | Order would immediately match (post-only rejected) | Post-only order would fill as taker | Adjust price or use regular limit order |
| Error Type | Message | Cause | Solution |
|---|
invalid_order | Invalid order parameters | Order request malformed | Check all order parameters are valid |
order_not_found | Order not found | Order doesn't exist (for cancel/query) | Order may have already been filled or cancelled |
order_already_filled | Order already filled | Cannot cancel a filled order | No action needed - order completed |
These errors only apply to perpetual futures trading (not spot trading).
| Error Type | Message | Cause | Solution |
|---|
| Insufficient margin | Not enough margin for position | Margin balance too low | Add margin or reduce leverage/position size |
| Max leverage exceeded | Leverage too high for this pair | Requested leverage > exchange limit | Lower your leverage setting |
| Position limit exceeded | Maximum position size reached | Already at max allowed position | Reduce existing position first |
| Liquidation risk | Order would trigger liquidation | Position would be immediately liquidated | Reduce order size or add margin |
| Error Type | Message | Cause | Solution |
|---|
no_position_to_reduce | No position to reduce | Reduce-only order but no open position | Check position exists before sending close signal |
hedge_mode_not_supported | Hedge mode not supported | Exchange doesn't support hedge mode | Use one-way mode or different exchange |
Quick reference for HTTP response codes.
| Status | Meaning | Action |
|---|
| 200 | Success | Signal processed - check response body for result (success/rejected/failed) |
| 201 | Created | Resource created successfully |
| 204 | No Content | Action completed (e.g., delete succeeded) |
| 400 | Bad Request | Invalid JSON, missing fields, or validation error - fix your payload |
| 401 | Unauthorized | Invalid webhook secret - check credentials |
| 403 | Forbidden | Access denied - check permissions |
| 404 | Not Found | Invalid webhook URL - check URL is correct |
| 409 | Conflict | Resource conflict (e.g., duplicate) |
| 429 | Too Many Requests | Rate limited - slow down and retry |
| 500 | Internal Server Error | SignalBee server error - retry later |
| 502 | Bad Gateway | Upstream service (exchange) unreachable |
| 503 | Service Unavailable | Service temporarily unavailable - retry later |
Use this decision tree to diagnose issues:
Signal not executing?
│
├─ Check SignalBee Signal History page
│ │
│ ├─ Signal received?
│ │ │
│ │ ├─ Status: "success" → Order executed! Check Order History
│ │ │
│ │ ├─ Status: "rejected" → Check the rejection reason:
│ │ │ ├─ duplicate_signal → Wait 5 minutes before retrying
│ │ │ ├─ webhook_disabled → Enable webhook in SignalBee
│ │ │ ├─ trading_disabled → Enable trading for exchange
│ │ │ ├─ pair_not_whitelisted → Add pair to whitelist
│ │ │ └─ order_exceeds_max_size → Reduce quantity
│ │ │
│ │ └─ Status: "failed" → Check the failure reason:
│ │ ├─ invalid_credentials → Re-enter API key/secret
│ │ ├─ insufficient_balance → Deposit funds
│ │ ├─ rate_limit_exceeded → Wait and reduce frequency
│ │ ├─ exchange_unavailable → Check exchange status
│ │ └─ order_execution_failed → See exchange error
│ │
│ └─ No signal received?
│ │
│ ├─ Check TradingView alert
│ │ ├─ Alert fired? → Check webhook URL format
│ │ └─ Alert not fired? → Check alert condition
│ │
│ └─ Check webhook URL
│ ├─ Correct user ID? → Should be UUID from SignalBee
│ └─ Using HTTPS? → Required for webhooks
│
└─ Order placed but not filled?
│
├─ Market order → Should fill instantly; check exchange
└─ Limit order → May be waiting; check open orders
SignalBee normalizes exchange errors into common types. Below are mappings for all 32 supported exchanges.
Note: Errors that don't match any known mapping are classified as unknown. If you encounter an unknown error, check the exchange's raw error message in the order details for more information.
Binance
| Code | SignalBee Error | Meaning |
|---|
| -2010 | insufficient_balance | Account has insufficient balance |
| -1003 | rate_limit | Too many requests |
| -1121 | invalid_symbol | Invalid symbol |
| -1013 | invalid_order | Filter failure (min notional, lot size, price) |
| -1022 | invalid_credentials | Invalid signature |
| -2014 | invalid_credentials | API key format invalid |
| -2013 | order_not_found | Order does not exist |
| -2011 | order_already_filled | Order already cancelled or filled |
| -1111 | quantity_too_small | Precision too high |
| -1112 | quantity_too_large | Quantity too large |
Bybit
| Code | SignalBee Error | Meaning |
|---|
| 10001 | invalid_order | Parameter error |
| 10003 | invalid_credentials | Invalid API key |
| 10004 | invalid_credentials | Invalid signature |
| 10005 | invalid_credentials | Permission denied |
| 110001 | insufficient_balance | Insufficient balance |
| 110002 | order_not_found | Order not found |
| 170124 | min_notional | Order value below minimum |
| 170130 | quantity_too_small | Quantity too small |
| 170131 | quantity_too_large | Quantity too large |
| 170132 | invalid_symbol | Invalid symbol |
Kraken
| Code | SignalBee Error | Meaning |
|---|
| EAPI:Invalid key | invalid_credentials | API key invalid |
| EAPI:Invalid signature | invalid_credentials | Signature invalid |
| EAPI:Rate limit exceeded | rate_limit | Too many requests |
| EOrder:Insufficient funds | insufficient_balance | Not enough funds |
| EOrder:Unknown pair | invalid_symbol | Invalid trading pair |
| EOrder:Order not found | order_not_found | Order not found |
| EOrder:Invalid order | invalid_order | Invalid order parameters |
| EService:Unavailable | exchange_unavailable | Service unavailable |
OKX
| Code | SignalBee Error | Meaning |
|---|
| 50001 | exchange_unavailable | Service temporarily unavailable |
| 50102-50104 | invalid_credentials | Invalid API key/signature/passphrase |
| 50011 | rate_limit | Rate limit exceeded |
| 51008 | insufficient_balance | Insufficient balance |
| 51001 | invalid_symbol | Invalid instrument |
| 51400 | order_not_found | Order not found |
| 51020 | invalid_order | Position does not exist |
KuCoin
| Code | SignalBee Error | Meaning |
|---|
| 400001 | invalid_credentials | Invalid API key |
| 400003 | invalid_credentials | Invalid signature |
| 400004 | invalid_credentials | Invalid passphrase |
| 200004 | insufficient_balance | Insufficient balance |
| 429000 | rate_limit | Too many requests |
| 400100 | invalid_order | Parameter error |
| 900001 | order_not_found | Order not found |
Coinbase
| Code | SignalBee Error | Meaning |
|---|
| INVALID_API_KEY | invalid_credentials | Invalid API key |
| INVALID_SIGNATURE | invalid_credentials | Invalid signature |
| RATE_LIMIT_EXCEEDED | rate_limit | Too many requests |
| INSUFFICIENT_FUNDS | insufficient_balance | Insufficient balance |
| INVALID_PRODUCT_ID | invalid_symbol | Invalid product ID |
| ORDER_NOT_FOUND | order_not_found | Order not found |
| INVALID_SIZE | min_notional | Order size invalid |
Gate.io
| Code | SignalBee Error | Meaning |
|---|
| INVALID_SIGNATURE | invalid_credentials | Invalid signature |
| INVALID_KEY | invalid_credentials | Invalid API key |
| BALANCE_NOT_ENOUGH | insufficient_balance | Insufficient balance |
| INVALID_CURRENCY_PAIR | invalid_symbol | Invalid currency pair |
| ORDER_NOT_FOUND | order_not_found | Order not found |
| ORDER_CLOSED | order_already_filled | Order already filled |
| TOO_MANY_REQUESTS | rate_limit | Rate limit exceeded |
| POSITION_NOT_ENOUGH | invalid_order | Position insufficient |
Bitget
| Code | SignalBee Error | Meaning |
|---|
| 40014-40018 | invalid_credentials | Authentication errors |
| 43005 | insufficient_balance | Insufficient balance |
| 43006 | order_not_found | Order not found |
| 43007 | order_already_filled | Order already filled |
| 45110 | min_notional | Order value too small |
| 45111 | quantity_too_small | Quantity too small |
| 45112 | quantity_too_large | Quantity too large |
| 50001 | rate_limit | Rate limit exceeded |
BingX
| Code | SignalBee Error | Meaning |
|---|
| 100001 | invalid_credentials | Invalid API key |
| 100002 | invalid_credentials | Invalid signature |
| 100401 | invalid_credentials | Permission denied |
| 80001 | insufficient_balance | Insufficient balance |
| 80012 | order_not_found | Order not found |
| 80013 | order_already_filled | Order already filled |
| 100429 | rate_limit | Rate limit exceeded |
HTX (Huobi)
| Code | SignalBee Error | Meaning |
|---|
| invalid-signature | invalid_credentials | Invalid signature |
| invalid-api-key | invalid_credentials | Invalid API key |
| account-frozen | invalid_credentials | Account frozen |
| insufficient-balance | insufficient_balance | Insufficient balance |
| base-not-found | invalid_symbol | Invalid symbol |
| order-not-found | order_not_found | Order not found |
| order-value-min-error | min_notional | Order value too small |
Bitfinex
| Code | SignalBee Error | Meaning |
|---|
| 10114 | invalid_credentials | Invalid API key |
| 10020 | rate_limit | Rate limit exceeded |
| 10001 | insufficient_balance | Insufficient balance |
| 10100 | invalid_symbol | Unknown symbol |
| 10300 | order_not_found | Order not found |
| 10301 | order_already_filled | Order already cancelled |
| 10050-10054 | min_notional/quantity errors | Size errors |
Bitstamp
| Code | SignalBee Error | Meaning |
|---|
| API0001 | invalid_credentials | Invalid API key |
| API0005 | invalid_credentials | Invalid signature |
| API0004 | rate_limit | Rate limit exceeded |
| API0002 | insufficient_balance | Insufficient balance |
| MIN_QUANTITY | quantity_too_small | Quantity too small |
| MAX_QUANTITY | quantity_too_large | Quantity too large |
| MIN_PRICE | price_too_low | Price too low |
| MAX_PRICE | price_too_high | Price too high |
MEXC
| Code | SignalBee Error | Meaning |
|---|
| -1021 | invalid_credentials | Invalid timestamp |
| -1022 | invalid_credentials | Invalid signature |
| -2015 | invalid_credentials | Invalid API key |
| -1003 | rate_limit | Too many requests |
| -2010 | insufficient_balance | Insufficient balance |
| -1121 | invalid_symbol | Invalid symbol |
| -2013 | order_not_found | Order not found |
| -1013 | min_notional | Filter failure |
Bitmart
| Code | SignalBee Error | Meaning |
|---|
| 30001 | invalid_credentials | Invalid API key |
| 30002 | invalid_credentials | Invalid signature |
| 40001 | invalid_symbol | Invalid symbol |
| 40005 | insufficient_balance | Insufficient balance |
| 40006 | order_not_found | Order not found |
| 40007 | min_notional | Order too small |
| 50000 | rate_limit | Rate limit exceeded |
AscendEx
| Code | SignalBee Error | Meaning |
|---|
| 100001 | invalid_credentials | Invalid API key |
| 100002 | invalid_credentials | Invalid signature |
| 300001 | insufficient_balance | Insufficient balance |
| 300006 | order_not_found | Order not found |
| 300008 | order_already_filled | Order already filled |
| 300011 | min_notional | Order value too small |
| 400001 | rate_limit | Rate limit exceeded |
Bitrue
| Code | SignalBee Error | Meaning |
|---|
| -1022 | invalid_credentials | Invalid signature |
| -2015 | invalid_credentials | Invalid API key |
| -1003 | rate_limit | Too many requests |
| -2010 | insufficient_balance | Insufficient balance |
| -1121 | invalid_symbol | Invalid symbol |
| -2013 | order_not_found | Order not found |
| -2011 | order_already_filled | Already cancelled |
WhiteBIT
| Code | SignalBee Error | Meaning |
|---|
| UNAUTHORIZED | invalid_credentials | Invalid API key |
| FORBIDDEN | invalid_credentials | Permission denied |
| INSUFFICIENT_BALANCE | insufficient_balance | Insufficient balance |
| ORDER_NOT_FOUND | order_not_found | Order not found |
| MARKET_NOT_FOUND | invalid_symbol | Invalid market |
| MIN_AMOUNT | min_notional | Order too small |
| RATE_LIMIT | rate_limit | Rate limit exceeded |
XT.com
| Code | SignalBee Error | Meaning |
|---|
| 102 | invalid_credentials | Invalid API key |
| 103 | invalid_credentials | Invalid signature |
| 307 | insufficient_balance | Insufficient balance |
| 308 | order_not_found | Order not found |
| 400 | invalid_symbol | Invalid symbol |
| 429 | rate_limit | Rate limit exceeded |
LBank
| Code | SignalBee Error | Meaning |
|---|
| 10001 | invalid_order | Invalid parameter |
| 10007 | invalid_credentials | Invalid signature |
| 10008 | invalid_credentials | Invalid API key |
| 10009 | insufficient_balance | Insufficient balance |
| 10013 | order_not_found | Order not found |
| 10015 | min_notional | Order too small |
| 10017 | rate_limit | Rate limit exceeded |
BTC Markets
| Code | SignalBee Error | Meaning |
|---|
| InvalidApiKey | invalid_credentials | Invalid API key |
| InvalidSignature | invalid_credentials | Invalid signature |
| InsufficientFund | insufficient_balance | Insufficient balance |
| InvalidMarket | invalid_symbol | Invalid market |
| OrderNotFound | order_not_found | Order not found |
| OrderAmountTooSmall | min_notional | Order too small |
| RateLimitExceeded | rate_limit | Rate limit exceeded |
NDAX
| Code | SignalBee Error | Meaning |
|---|
| Uses Binance-compatible error codes | | |
HashKey
| Code | SignalBee Error | Meaning |
|---|
| Uses Binance-compatible error codes | | |
Foxbit
| Code | SignalBee Error | Meaning |
|---|
| 10001 | invalid_credentials | Invalid API key |
| 10002 | invalid_credentials | Invalid signature |
| 10003 | insufficient_balance | Insufficient balance |
| 10008 | order_not_found | Order not found |
| 10009 | min_notional | Order too small |
| 10012 | invalid_symbol | Invalid symbol |
Hyperliquid
Hyperliquid uses message-based error detection:
| Error Message Contains | SignalBee Error |
|---|
| "insufficient" | insufficient_balance |
| "invalid signature" | invalid_credentials |
| "rate limit" | rate_limit |
| "not found" | order_not_found |
| "minimum" | min_notional |
Perpetual exchanges have additional error types for margin and position management.
Binance Perpetual
| Code | SignalBee Error | Meaning |
|---|
| -2022 | invalid_order | ReduceOnly order rejected |
| -4028 | hedge_mode_not_supported | Invalid position side |
| -4046 | invalid_order | Position side mismatch |
| -4059 | invalid_order | Position not exist |
| -4164 | min_notional | Order notional too small |
| All spot codes | | Same mappings as spot |
Bybit Perpetual
| Code | SignalBee Error | Meaning |
|---|
| 110043 | hedge_mode_not_supported | Position mode mismatch |
| 110020 | insufficient_balance | Insufficient margin |
| 110007 | invalid_order | Position not exist |
| 110018 | min_notional | Order value too small |
| 110019 | quantity_too_small | Quantity too small |
| All spot codes | | Same mappings as spot |
OKX Perpetual
| Code | SignalBee Error | Meaning |
|---|
| 51020 | invalid_order | Position does not exist (different from spot) |
| 51021 | invalid_order | Position side error |
| 51024 | hedge_mode_not_supported | Position mode mismatch |
| 51102 | insufficient_balance | Insufficient margin |
| All spot codes | | Same mappings as spot |
KuCoin Perpetual
| Code | SignalBee Error | Meaning |
|---|
| 300001 | invalid_order | Order validation failed |
| 300003 | insufficient_balance | Insufficient margin |
| 300005 | hedge_mode_not_supported | Position mode error |
| 400200 | invalid_order | Reduce only rejected |
| All spot codes | | Same mappings as spot |
Gate.io Perpetual
| Code | SignalBee Error | Meaning |
|---|
| POSITION_NOT_FOUND | invalid_order | Position not found |
| POSITION_EMPTY | invalid_order | No position to close |
| LEVERAGE_TOO_HIGH | invalid_order | Leverage exceeds limit |
| HEDGE_MODE_NOT_SUPPORTED | hedge_mode_not_supported | Hedge mode error |
| INSUFFICIENT_MARGIN | insufficient_balance | Insufficient margin |
| All spot codes | | Same mappings as spot |
Bitget Perpetual
| Code | SignalBee Error | Meaning |
|---|
| 34001 | invalid_order | Position not exist |
| 34002 | hedge_mode_not_supported | Position mode error |
| 34003 | insufficient_balance | Insufficient margin |
| 43010 | invalid_order | Reduce only rejected |
| All spot codes | | Same mappings as spot |
Hyperliquid Perpetual
| Error Message Contains | SignalBee Error |
|---|
| "insufficient margin" | insufficient_balance |
| "position" | invalid_order |
| "hedge" | hedge_mode_not_supported |
| All spot patterns | |
If you can't resolve your issue using this reference:
Before contacting support, collect:
- Signal ID or Order ID (from SignalBee history)
- Exact error message (copy the full text)
- Timestamp (when the error occurred)
- Steps to reproduce (what triggered the error)
- Exchange (which exchange you're using)
- Screenshot (of the error in SignalBee UI)
- Exchange Status: Check your exchange's status page for outages
- TradingView Status: Verify TradingView alerts are working
- SignalBee Status: Check our status page for known issues
Email: support@signalbee.trade
Include all information from step 1 in your message. Do not include your API keys or secrets.