Coin Listing Docs
Telegram ↗

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 13 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.