Discord API · error code

Discord error 10014: Unknown emoji

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

Last verified against Discord Developer Docs - Opcodes and status codes

What Discord returns
Unknown emoji

What error 10014 means

The emoji you referenced cannot be found by your bot. This code shows up in two places: reaction endpoints (adding or removing a reaction) and guild emoji management (fetching, editing or deleting a custom emoji).

For reactions, the cause is usually formatting. Custom emoji must be sent as name:id (URL-encoded, so the colon becomes %3A), not as the full <:name:id> mention string and not just the ID. Unicode emoji must be URL-encoded too. Get either wrong and Discord cannot resolve it.

For custom emoji specifically, the bot must be able to see the emoji. Bots can use emoji from any guild they are a member of, but if the emoji was deleted, or came from a server the bot is not in, you get 10014. Emoji from a Nitro user's personal collection are not available to bots at all.

What it looks like

{
  "message": "Unknown Emoji",
  "code": 10014
}

Why it happens

  • Reaction sent as <:name:id> instead of name:id, or not URL-encoded
  • Custom emoji was deleted from its guild
  • Emoji belongs to a guild the bot is not a member of
  • Animated emoji sent without the correct name (a:name:id is for mentions; reactions still use name:id)
  • Unicode emoji with a variation selector mismatch (for example a trailing U+FE0F)

How to fix Discord error 10014

  1. 1For custom emoji reactions, build the string as name:id and encodeURIComponent it: PUT /channels/{id}/messages/{id}/reactions/name%3A123456/@me
  2. 2For unicode, encodeURIComponent the raw character
  3. 3Confirm the emoji still exists: GET /guilds/{guild.id}/emojis/{emoji.id}
  4. 4Make sure the bot is in the guild that owns the emoji, or upload it to your own application via the application emoji endpoints
  5. 5Use your library's resolved emoji object rather than a hand-typed string

How to stop it recurring

Upload the emoji your bot depends on as application emoji (owned by the app, not a guild) so they cannot be deleted by server admins. Store emoji as a name and ID pair rather than a display string, and render the reaction format and the mention format from that pair.

Emoji-heavy features should also watch the per-message reaction ceiling, 30010, since the two errors bracket the same feature: 10014 when the emoji cannot be resolved, 30010 when the message cannot take more. Emoji file-size and format rules are on the Discord limits page.

Official reference: Discord Developer Docs - Opcodes and status codes. See all Discord error codes or the Discord limits and quotas.

Related codes

Error 10014 - quick answers

What does Discord error 10014 mean?

The emoji you referenced cannot be found by your bot. This code shows up in two places: reaction endpoints (adding or removing a reaction) and guild emoji management (fetching, editing or deleting a custom emoji). For reactions, the cause is usually formatting. Custom emoji must be sent as name:id (URL-encoded, so the colon becomes %3A ), not as the full <:name:id> mention string and not just the ID.

How do I fix Discord error 10014?

1. For custom emoji reactions, build the string as name:id and encodeURIComponent it: PUT /channels/{id}/messages/{id}/reactions/name%3A123456/@me 2. For unicode, encodeURIComponent the raw character 3. Confirm the emoji still exists: GET /guilds/{guild.id}/emojis/{emoji.id} 4. Make sure the bot is in the guild that owns the emoji, or upload it to your own application via the application emoji endpoints 5. Use your library's resolved emoji object rather than a hand-typed…

Should I retry after error 10014?

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.