Telegram Bot API · error code

Telegram error 403: Forbidden: user is deactivated

Permanent - do not retryHTTP 403403 Forbidden: blocked, kicked, not started

Last verified against Telegram Bot API reference

What Telegram returns
Forbidden: user is deactivated

What error 403 means

The account you are messaging has been deleted or deactivated on Telegram. The ID still resolves (so it is not chat not found) but the account can no longer receive anything. Telegram accounts are deleted on request or automatically after the self-destruct period set by the user, and this error is how your bot learns about it.

It is permanent for that user ID. If the person later creates a new account, it will have a different ID and they will need to start your bot again. Keeping the old ID in active lists just produces this 403 on every broadcast.

Expect a small steady trickle of these in any bot with a large user base; it is attrition, not a fault.

What it looks like

{"ok":false,"error_code":403,"description":"Forbidden: user is deactivated"}

Why it happens

  • The user deleted their account.
  • The account was auto-deleted after inactivity.
  • The account was terminated by Telegram.
  • A very old subscriber list that was never reconciled against send failures.

How to fix Telegram error 403

  1. 1Mark the user as deactivated and exclude them from all future sends.
  2. 2Do not retry; the state will not change for this ID.
  3. 3If you key on Telegram ID for other data, soft-delete rather than hard-delete so history stays intact.
  4. 4Report the count of deactivated accounts per campaign so list health is visible.

How to stop it recurring

Handle 403 descriptions as a family: blocked, deactivated, can't initiate and kicked all mean 'stop sending to this target' with different reasons. A single classifier in your send path that flips a per-target status prevents wasted sends and keeps broadcast throughput inside the rate limits. Periodically expire contacts with no inbound activity for a long time rather than discovering attrition one failed send at a time.

In python-telegram-bot this is a Forbidden, in aiogram a TelegramForbiddenError; the description string is the only way to distinguish it from blocked, so log it. Pruning deactivated accounts also protects broadcast throughput, since failed sends still spend the budget described under rate limits.

Official reference: Telegram Bot API reference. See all Telegram error codes or the Telegram limits and quotas.

Related codes

Error 403 - quick answers

What does Telegram error 403 mean?

The account you are messaging has been deleted or deactivated on Telegram. The ID still resolves (so it is not chat not found ) but the account can no longer receive anything. Telegram accounts are deleted on request or automatically after the self-destruct period set by the user, and this error is how your bot learns about it. It is permanent for that user ID.

How do I fix Telegram error 403?

1. Mark the user as deactivated and exclude them from all future sends. 2. Do not retry; the state will not change for this ID. 3. If you key on Telegram ID for other data, soft-delete rather than hard-delete so history stays intact. 4. Report the count of deactivated accounts per campaign so list health is visible.

Should I retry after error 403?

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 Telegram by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.