Discord API · error code

Discord error 50033: Invalid recipient(s)

Permanent - do not retryHTTP 400Validation and request shape

Last verified against Discord Developer Docs - Opcodes and status codes

What Discord returns
Invalid Recipient(s)

What error 50033 means

You tried to open a DM or group DM with a recipient Discord will not accept. For Create DM (POST /users/@me/channels with recipient_id) the usual reasons are: the recipient is another bot (bots cannot DM bots), the recipient is the bot itself, the ID is not a user, or the account is gone. For Create Group DM the recipients must be users who have authorized your app with the gdm.join scope and you supplied access tokens that do not satisfy that.

It is distinct from 50007, which is about a valid user who has DMs closed. 50033 is "that recipient is not something I can open a DM with at all". Bots that try to DM every author in a channel, including other bots and webhooks (webhook messages have a pseudo-user author), hit this regularly.

What it looks like

{
  "message": "Invalid Recipient(s)",
  "code": 50033
}

Why it happens

  • recipient_id is a bot or webhook author
  • recipient_id is the bot's own user ID
  • Deleted or non-existent user
  • Group DM recipients without valid gdm.join access tokens
  • Role or channel ID passed instead of a user ID

How to fix Discord error 50033

  1. 1Skip authors where user.bot is true or message.webhook_id is set before attempting a DM
  2. 2Validate the ID is a user via GET /users/{id} when in doubt
  3. 3For group DMs, collect access tokens with the gdm.join scope for each participant and pass them in access_tokens
  4. 4Return a clear message to whoever triggered the action rather than retrying

How to stop it recurring

Filter DM targets at the source: anything that produces a user list for DMs should exclude bots, the app itself and webhook pseudo-users. Keep DM logic behind a helper that validates the target type first.

The bot-to-bot DM restriction is absolute, so relay designs that need two bots to talk must use a channel or an external queue instead. Valid users who simply have DMs closed fail with 50007, and opening channels too aggressively trips 40003; the three codes together describe the whole DM failure space.

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

Related codes

Error 50033 - quick answers

What does Discord error 50033 mean?

You tried to open a DM or group DM with a recipient Discord will not accept. For Create DM (POST /users/@me/channels with recipient_id ) the usual reasons are: the recipient is another bot (bots cannot DM bots), the recipient is the bot itself, the ID is not a user, or the account is gone.

How do I fix Discord error 50033?

1. Skip authors where user.bot is true or message.webhook_id is set before attempting a DM 2. Validate the ID is a user via GET /users/{id} when in doubt 3. For group DMs, collect access tokens with the gdm.join scope for each participant and pass them in access_tokens 4. Return a clear message to whoever triggered the action rather than retrying

Should I retry after error 50033?

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.