Limits and Errors
Sources, rate limits, close codes, and compatibility rules.
Sources #
| Source | Description |
|---|---|
BINANCE |
Binance official announcements |
UPBIT |
Upbit listing notices |
BITHUMB |
Bithumb listing notices |
COINBASE |
Coinbase Markets listings |
BINANCE_ALPHA |
Binance Alpha announcements |
Rate limits #
| Limit | Value | Notes |
|---|---|---|
| Concurrent connections per (license, IP) | 10 |
Per-bucket — different licenses on the same IP each get their own 10. |
| Distinct IPs per account | 1–3 |
Free=1, Trial=1, Basic=2, Pro=3. Add more via /add in the bot — $100 per slot, prorated to the remaining subscription period. |
| Failed-auth attempts | 5 / 60s then locked for 360s |
Per-IP, across all licenses. |
Error codes #
All auth- and policy-related closures use code 1008. The reason field disambiguates.
| Code | Reason | When | Recover by |
|---|---|---|---|
1008 |
Missing key |
URL has no ?key=…. |
Fix the URL. Do not retry blindly. |
1008 |
Unknown channel |
Path is not /feed or /listings. |
Use /feed or /listings. |
1008 |
License rejected |
Key not found in active set, or fundamentally invalid. | Stop. The same key will keep failing. |
1008 |
License expired |
License's expires_at is in the past (checked at handshake AND mid-connection). |
Renew, then reconnect. |
1008 |
License removed |
License was deleted server-side mid-connection. | Re-purchase or contact support. |
1008 |
Trial period ended |
Trial's trial_expires_at has passed mid-connection. |
Upgrade. |
1008 |
Trial: /feed not available |
Trial client connected to /feed. |
Use /listings. |
1008 |
Too many connections |
Reached the per-(license, IP) cap of 10. | Wait, then retry. Check for connection leaks. |
1008 |
Too many IPs |
Exceeded the per-account max_ips from a new IP. |
Disconnect from another IP, or contact support. |
1008 |
max_ips reduced |
Mid-connection: max_ips was lowered (e.g. tier downgrade) and you're on an extra IP. |
Reconnect from a previously-permitted IP. |
1008 |
Too many attempts |
Exceeded the bad-auth rate limit (5 failures in 60s). |
Back off 360s before retrying. |
For network-level disconnects (any code other than 1008), reconnect with exponential backoff. Start at 1s, cap at 30s. Reset the backoff after a successful message.
License state is re-verified server-side every 30 seconds. If a license is deleted, expires, or its max_ips is reduced, the affected connection is closed at the next refresh tick. Treat any 1008 as fatal for the current key/state and stop retrying — the underlying license needs server-side resolution before reconnect makes sense.
Forward compatibility #
New fields may be added without notice. Your client must ignore unknown fields. New fields only add data. Existing fields are not replaced.