Telegram channel post API
Resolve a public channel username and post ID to one message — text, views, media, and reactions.
GET /v1/telegram/channels/{handle}/posts/{postId}1 credit Failed requests are free
About this endpoint
GET /v1/telegram/channels/{handle}/posts/{postId} returns one public broadcast-channel message. Pass the channel username (with or without @) and the numeric postId from the public URL, send x-api-key, and branch on data.lookupStatus before you write a row. On found, data.post can include postId, simplified HTML text, ISO date, views, forwardedFrom, replyTo, photoUrls, videoUrl, and reactions. The handle path segment may also be a full t.me post URL when it matches the same postId. CDN media URLs can expire; download promptly if you need durable copies.
This route is channels only. Public groups are not supported. To page recent messages without a known id, use GET /v1/telegram/channels/{handle}/posts. For the entity card (title, description, subscriber count), use GET /v1/telegram/channels/{handle}. Pricing for this single-post operation is shown on this page; bill from meta.creditsCharged on the response.
Telegram channel post API FAQ
How do I fetch a single Telegram channel post by ID?
Call GET /v1/telegram/channels/{handle}/posts/{postId} with your Social Fetch API key in the x-api-key header. The handle is the public @username; postId is the numeric id from the public t.me URL. Read data.lookupStatus, then data.post. See the API docs for parameters and examples.
How many credits does a Telegram channel post lookup cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.
Where do I get the postId?
Use the numeric message id from a public Telegram post URL (t.me/channelname/12345 → postId 12345), or from a prior list response where each item includes postId. The path parameter must be digits only.
What fields are in a single Telegram channel post?
On found, data.post can include postId, text (simplified HTML with line breaks and links), date (ISO 8601), views, forwardedFrom, replyTo (when the message quotes another), photoUrls, videoUrl, and reactions (emoji or custom emoji metadata plus counts). Media URLs come from Telegram CDN and may expire.
Does this work for public Telegram groups?
No. The single-post and channel posts list routes support public broadcast channels only. Groups are not supported on these operations. Use GET /v1/telegram/channels/{handle} when you need group metadata from a public username.
Single post vs channel posts list vs channel metadata?
Use this route when you already know the numeric post id. Use GET /v1/telegram/channels/{handle}/posts to page recent messages for a handle. Use GET /v1/telegram/channels/{handle} for the channel or group identity card, not message content.
What does lookupStatus mean on a single channel post?
found means data.post is populated. not_found means the username or post did not resolve on a public channel page. restricted covers private or non-scrapable contact pages. HTTP 200 still means the request finished; always branch on lookupStatus before treating the payload as a found message.