Discord error 10003: Unknown channel
Last verified against Discord Developer Docs - Opcodes and status codes
Unknown channelWhat error 10003 means
Discord could not find a channel with the ID you supplied, from the point of view of your bot. That last part matters: a channel that exists but is hidden from the bot by a permission overwrite, or that lives in a guild the bot was kicked from, looks exactly like a channel that never existed. Discord does not distinguish "does not exist" from "you cannot see it" in this code.
The ID itself is usually the problem. Snowflakes are 17-19 digit integers; if you stored one as a JavaScript number it has been silently rounded and will never match. Copying a channel ID from a different server, a deleted channel, or a thread that was archived and removed also produces 10003.
The overlap with 50001 Missing Access is worth pinning down, because the same misconfiguration can produce either. When a permission overwrite hides a channel from the bot, some routes return 403 with 50001 and others resolve the channel as unknown and return 404 with 10003; from the bot's perspective the channel has ceased to exist either way, so check overwrites before concluding the channel is gone. Threads add their own variant: an archived thread that is later deleted, or a thread addressed through its parent channel's ID, resolves as unknown too. And the most mundane version is configuration rot: a log channel or welcome channel stored in your database months ago, deleted by an admin since, now failing on every event.
What it looks like
{
"message": "Unknown Channel",
"code": 10003
}Why it happens
- Channel was deleted after your bot cached or stored its ID
- Snowflake stored as a floating-point number and lost precision (JavaScript Number, some JSON parsers)
- Bot is no longer in the guild that owns the channel
- Bot lacks View Channel on that channel, so it resolves as unknown
- ID belongs to a different object type (a guild or user ID passed where a channel ID was expected)
- DM channel ID used for a user whose DM channel was never created via Create DM
How to fix Discord error 10003
- 1Print the ID you sent and compare it to the channel's ID in Discord (Developer Mode > Copy Channel ID); check length and last digits
- 2Store and pass snowflakes as strings end to end; audit any JSON.parse or numeric column that could round them
- 3Confirm the bot is still a member of the guild (GET /users/@me/guilds) and that the channel is in that guild's channel list
- 4Grant the bot View Channel on the channel or its category and retry
- 5For DMs, call POST /users/@me/channels with the recipient_id first and use the returned channel id
How to stop it recurring
Treat stored channel IDs as data that can go stale. Handle the CHANNEL_DELETE gateway event to remove them, and wrap every send in a handler that catches 10003, logs it once, and disables that destination rather than retrying forever. Use string types for all snowflakes in your schema.
Channel and thread caps, name rules and the per-guild channel budget are on the Discord limits page; if every channel suddenly looks unknown, check guild membership first as described in Discord bot not responding.
Official reference: Discord Developer Docs - Opcodes and status codes. See all Discord error codes or the Discord limits and quotas.
Related codes
Error 10003 - quick answers
What does Discord error 10003 mean?
Discord could not find a channel with the ID you supplied, from the point of view of your bot. That last part matters: a channel that exists but is hidden from the bot by a permission overwrite, or that lives in a guild the bot was kicked from, looks exactly like a channel that never existed. Discord does not distinguish "does not exist" from "you cannot see it" in this code. The ID itself is usually the problem.
How do I fix Discord error 10003?
1. Print the ID you sent and compare it to the channel's ID in Discord (Developer Mode > Copy Channel ID); check length and last digits 2. Store and pass snowflakes as strings end to end; audit any JSON.parse or numeric column that could round them 3. Confirm the bot is still a member of the guild (GET /users/@me/guilds) and that the channel is in that guild's channel list 4. Grant the bot View Channel on the channel or its category and retry 5. For DMs, call POST…
Should I retry after error 10003?
No. Retrying the same request produces the same error; the condition has to be fixed first. Treat it as a permanent failure for that message and surface it, rather than looping.
Stop debugging Discord by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.