Discord API · error code

Discord error 10003: Unknown channel

Permanent - do not retryHTTP 404Unknown resource (10xxx)

Last verified against Discord Developer Docs - Opcodes and status codes

What Discord returns
Unknown channel

What 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

  1. 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
  2. 2Store and pass snowflakes as strings end to end; audit any JSON.parse or numeric column that could round them
  3. 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
  4. 4Grant the bot View Channel on the channel or its category and retry
  5. 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.