Telegram Number Validation & Profile Lookup APIs
Query a Telegram user's public profile by phone number, username, or user ID.
- Existence check: resolve a peer and learn its Telegram user ID, username, and display name; issues a userHash for the heavier lookups
- About: fetch the user's public bio text by userHash
- Profile photo: download the avatar by userHash (returned base64-encoded; Telegram photos have no public URL)
Two-step flow: first call Check Exists to obtain a userHash, then pass that userHash to Get About / Get Picture. These lookup endpoints do not require you to create a messaging session.
RESTful JSON API for lead validation, CRM enrichment, and customer intelligence.
Overview
Base URL https://api.opendata-api.com
Every call needs an API key. Paste it once below — it's attached to each request automatically.
/api/project/telegram/check-exists Check Telegram Peer Exists
Full docs →Details
Resolve a peer and return whether it exists on Telegram. Cheapest query; use it to pre-validate numbers/usernames before the about/picture queries. When exists=true, the response also includes the numeric Telegram user id, username (when the peer has one), display name, and a userHash that must be passed to Get About / Get Picture to authorize the heavier lookup. The userHash is valid for 24 hours. When the peer cannot be resolved, exists=false and reason carries an error code (e.g. PHONE_NOT_OCCUPIED, USERNAME_NOT_OCCUPIED). The peer accepts three forms: +phone (digits with a leading +, e.g. +8613800138000), @username or a bare username, and user:<id> for a numeric user ID.
| Parameter | In | Value |
|---|---|---|
| path |
/api/project/telegram/get-about Get About / Bio Text
Full docs →Details
Retrieve a Telegram user's public bio (About) text, plus the numeric user id and username. Two-step flow: first call Check Telegram Peer Exists to obtain a userHash for the target peer, then pass that userHash here. Calls without a valid (or expired/unknown) userHash are rejected. The peer is resolved from the userHash server-side — no peer parameter is accepted. If the peer does not exist, exists=false and reason explains why. An empty about means the user has no bio or hides it. If the peer exists but is a group/channel rather than a user, the response carries a bad-request business code.
| Parameter | In | Value |
|---|---|---|
| query |
/api/project/telegram/get-picture Get Profile Photo (Avatar)
Full docs →Details
Fetch a Telegram user's profile photo. Two-step flow: first call Check Telegram Peer Exists to obtain a userHash for the target peer, then pass that userHash here. Calls without a valid (or expired/unknown) userHash are rejected. The peer is resolved from the userHash server-side — no peer parameter is accepted. Telegram photos have no public URL, so the photo is returned base64-encoded with its MIME type (image/jpeg) — decode the data field to get the image bytes. pictureSet=false means the user has no photo or hides it by privacy settings. If the peer does not exist, exists=false and reason explains why.
| Parameter | In | Value |
|---|---|---|
| query |