Guides

Telegram number check: a practical guide to what it can and can't tell you

How Telegram's phone and username model differs, what a registration check can and can't tell you, how privacy settings affect it, with API examples.

By Published 7 min read

On this page

A Telegram number check tells you whether a Telegram account can be found for a phone number you hold: registered, not registered or unknown, with the time of the check. Because Telegram is built around usernames and gives people control over who can find them by number, a "not registered" answer is weaker here than on apps where every account is reachable by number. Read it as "not reachable through this number", which is usually what a channel decision needs.

How does Telegram's phone and username model differ?

Telegram starts from a phone number but doesn't depend on it afterwards. Three design choices matter for a number check.

A number at sign-up, usernames after. Each phone number is a separate Telegram account, according to Telegram's FAQ. But people can chat without showing that number. Since October 2014, users have been able to set a public username so that "anyone will be able to find you by your username and contact you – without having to know your phone number" (Telegram, 2014).

Numbers hidden by default. Telegram's FAQ says that by default a user's number is visible only to people they have saved as contacts, and that this can be changed in the privacy settings. A dedicated "Who Can See My Number" control was added in May 2019 (Telegram, 2019). Separately, users control whether others are allowed to find them by their phone number at all (Telegram, 2022). Both appear as distinct keys in Telegram's own privacy API documentation: one for the phone number's visibility and one for being added by phone.

Accounts without a SIM. Since December 2022, people can create a Telegram account without a SIM card, using anonymous numbers bought on the Fragment platform (Telegram, 2022). Such an account isn't tied to a number from a mobile network at all.

Compare that with apps where an account is normally discoverable through the number it was registered with. On Telegram, the link between "a person" and "a phone number you hold" is looser, and it's under the person's control.

A security seal with a shield, an encrypted-storage lock, a masked phone number and a retention timer.A security seal with a shield, an encrypted-storage lock, a masked phone number and a retention timer.
Numbers are encrypted at rest, masked in logs and screens, and kept only as long as needed.

What can a Telegram registration check tell you?

It answers one narrow question: can a Telegram account be found for this number right now? That supports a few practical decisions:

  • Channel selection. If a customer asked for updates on Telegram, you know whether their number leads to an account before you try. See channel selection.
  • Verification code routing. Before sending a passcode through Telegram, you know whether the number is likely to receive it there, or whether SMS is the better first attempt.
  • A presence signal at sign-up. A number with an account passed Telegram's own sign-up verification at some point. That makes it a little more likely to be a number in real use. It's one signal among several, as our guide to reducing fake sign-ups explains.

Every conclusive answer carries checked_at. Accounts come and go, and numbers get reassigned by carriers, so a recent answer is stronger than an old one.

What can't it tell you?

More than on most platforms, because of the design choices above:

  • Whether the person uses Telegram at all. They may be on Telegram with a different number, with an anonymous number, or with number discovery switched off.
  • Their username or identity. The check never returns usernames, names, photos, bios or last-seen times, and it can't be used to look up who is behind a number.
  • Whether they read messages there. Registration isn't activity. Many people keep accounts they rarely open.
  • Whether you may message them. An account is not consent. More on this below.

The practical consequence: a true is fairly informative, a false much less so. Never use false alone to conclude that a number is fake.

How do privacy settings affect the answer?

They can turn "has an account" into "can't be found by this number". When someone restricts who can find them by their phone number, a check through that number may return registered: false or unknown even though the account exists. Our Telegram check page notes the same limit.

That's a feature of Telegram, not a fault in the check, and it's the right outcome for the person. They chose not to be found by number. Respect it in your design:

  • Don't retry repeatedly to "get a better answer". A privacy setting won't change because you ask again.
  • Don't try to work around it through other data sources.
  • For people who matter to you, such as a customer who opted in to Telegram updates, ask them directly for the channel and handle they prefer.

How do you check Telegram with the API?

Use checks: ["telegram"] (the alias for telegram.registered) on POST /v1/lookup. It works in real time for up to 100 numbers per request, and in bulk jobs for larger lists. The test numbers return every state:

Shell
curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003", "+447700900005"],
       "checks": ["telegram"], "wait": 5}'

The four telegram.registered results from the real test-mode response, trimmed:

JSON
{"status": "completed",           "registered": true,  "confidence": "high", "checked_at": "2026-09-25T17:17:34.544Z", "billed": false, "reason": null}
{"status": "completed",           "registered": false, "confidence": "high", "checked_at": "2026-09-25T17:17:34.544Z", "billed": false, "reason": null}
{"status": "unknown",             "registered": null,  "confidence": null,   "checked_at": null, "billed": false, "reason": "UPSTREAM_TIMEOUT"}
{"status": "unsupported_country", "registered": null,  "confidence": null,   "checked_at": null, "billed": false, "reason": "UNSUPPORTED_COUNTRY"}

Telegram has no country restrictions in live mode; +447700900005 is the test number that simulates unsupported_country. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Test keys never bill.

Answers that take longer than wait come back as pending. With test number +447700900004 and "wait": 1, the real response was:

JSON
"status": "pending",
"next": {"poll_url": "/v1/lookups/lkp_0VWFm9xa9KWE4k5QYBeh", "poll_after_ms": 2000}

Poll GET /v1/lookups/{id}?wait=10, or register a webhook for lookup.completed. You can also combine Telegram with other checks in one request, for example ["telegram", "whatsapp", "viber"], to see which apps a customer can be reached on. Answers differ per service for the same number.

How should you act on each answer?

Decide per message type, and remember that Telegram's "no" is soft:

AnswerPasscode deliveryUpdates the customer opted intoStored record
registered: trueOffer Telegram if you support it; keep SMS as fallbackSend on Telegram if the customer chose itStore true with checked_at
registered: falseUse SMS or another channelUse the customer's other chosen channelStore false, but treat it as "not found by number"
registered: null (unknown)Use your default channelKeep previous routingDon't overwrite a stored conclusive answer
pendingDon't wait in a user-facing flow; use the defaultApply the answer to the next messageUpdate when it arrives
unsupported_country, invalid_numberUse your default; fix the number if invalidSameFlag for cleanup if invalid

Repeat checks within the freshness window are served from your account's cache for free (cached: true, billed: false). A monthly refresh, or a re-check after a failed Telegram delivery, is usually enough.

Where does Telegram fit for verification codes?

It can be a cheaper route for passcodes in markets where Telegram is widely used. Telegram runs a Gateway API that lets businesses send verification codes to users inside Telegram. At the time of writing (September 2026), its own page lists a price of $0.01 per delivered code and says you only pay for codes delivered within the time you specify (Telegram Gateway).

A registration check fits in front of that: send the code through Telegram only when the number leads to an account, and send the rest by SMS or voice. That avoids a failed attempt and a delay for users who aren't on Telegram. The general pre-send logic, including line type and fraud checks, is in OTP fraud prevention: checks to run before sending a code.

The same as for any channel: people must have given you their number and agreed to hear from you there. A registration check helps you deliver messages people expect. It doesn't create permission to send new ones.

Telegram's public groups and channels make it attractive for spam, which is why the check is built with limits:

  • Check only numbers you hold for a legitimate purpose: customers, sign-ups and leads who gave you their number.
  • Ranges are refused. Requests with 20 or more consecutive numbers return 403 suspected_enumeration, and each account has a daily cap. See rate limits and abuse.
  • Yes, no or unknown only. No usernames, profiles or activity. Our acceptable use policy forbids profiling and finding people to message unsolicited.
  • Objections are honoured. People can object through our opt-out form. Suppressed numbers are skipped and never charged.

Respect the fact that many Telegram users hide their number on purpose. Telegram is named here descriptively. MobileValidate is not affiliated with Telegram.

What are the key takeaways?

  • Telegram links accounts to phone numbers at sign-up but is built around usernames. Numbers are hidden by default, and people control whether they can be found by number.
  • A registration check answers whether an account can be found for a number you hold. true is informative; false often means "not reachable through this number", not "doesn't use Telegram".
  • Privacy settings, other numbers and SIM-free anonymous numbers all limit what the check can see. Don't work around them.
  • Use checks: ["telegram"] in real time or bulk. Handle pending without blocking users, and never overwrite a stored answer with unknown.
  • Use the answer to route passcodes and expected messages, for example in front of Telegram's own verification gateway.
  • It's not consent and it's not a lookup tool. Test every branch with the test numbers and see the Telegram check page for pricing.

Sources

  1. Telegram FAQ — Telegram, 2026
  2. Usernames and Secret Chats 2.0 — Telegram, 2014
  3. Focused Privacy, Discussion Groups, Seamless Web Bots and More — Telegram, 2019
  4. No-SIM Signup, Auto-Delete All Chats, Topics 2.0 and More — Telegram, 2022
  5. Privacy settings (API documentation) — Telegram, 2026
  6. Telegram Gateway — Telegram, 2026

Frequently asked questions

Why can a Telegram check say not registered when the person uses Telegram?

Telegram lets people control whether others can find them by their phone number, and an account can also be linked to a different number than the one you hold. When an account can't be found through the number you checked, the answer can be not registered or unknown even though the person uses Telegram.

Does the check return the Telegram username or profile?

No. It answers only whether an account is associated with the number. Usernames, names, photos, bios and last-seen times are never returned.

Is the person notified when their number is checked?

No. Nothing is sent to the number, and the person is not notified by us.

Can I check Telegram in real time?

Yes. Use the telegram alias (telegram.registered) on POST /v1/lookup for up to 100 numbers per request, or in bulk jobs for up to 50,000 numbers and e-mails.

Can I use the result to message people on Telegram?

Only people who gave you their number and agreed to hear from you on Telegram. A registered answer is not consent, and our acceptable use policy forbids finding recipients for unsolicited messages.

All articles

Know before you send.

Tell us about your use case. We review every request and set you up with test and live keys.