API catalog / Telegram API / Get channel messages
Telegram Messages API
Full message history of any public channel — text, media, polls, forwards and view counts — newest first.
https://api.endpointry.com/v1/telegram/messagesReturns a public channel's messages, newest first, up to 100 per response. Each message carries its permalink, publish time, view count, plain text and a safe-subset HTML rendering, plus whatever it attached: photos and albums, videos, stickers, files with their type and duration, polls with per-option shares, and the origin of a forwarded post. Pagination walks backwards through the channel with `meta.pagination.next_cursor`, ending with `null` at the first message.
| messages* | array<object> |
| id* | integer |
| url* | string · uri |
| date* | string · date-time |
| author* | string | null |
| text* | string | nullThe message as plain text, with line breaks preserved. |
| html* | string | nullThe message with its original formatting, limited to a safe subset of tags (b, i, u, s, a, code, pre, br, span) and, on links, href alone. |
| views* | integer | nullView count as Telegram reports it; rounded for large numbers. |
| forwarded_from* | object | null |
| channel* | string | null |
| title* | string | null |
| message_id* | integer | null |
| url* | string · uri | null |
| link_preview* | object | null |
| url* | string · uri |
| title* | string | null |
| name* | string | nullThe site name Telegram resolved. |
| description* | string | null |
| image_url* | string · uri | null |
| photos* | array<object> |
| url* | string · uri |
| permalink* | string · uriLink to this item, which differs from the message for album items. |
| album* | booleanWhether the photo is part of a grouped album. |
| videos* | array<object> |
| url* | string · uri |
| sticker* | object | null |
| url* | string · uri |
| mime_type* | string | null |
| document* | object | null |
| kind* | "video" | "audio" | "voice" | "image" | "sticker" | "file" |
| file_name* | string | null |
| mime_type* | string | null |
| size* | integer | nullSize in bytes. |
| duration* | integer | nullSeconds, for audio and video. |
| width* | integer | null |
| height* | integer | null |
| poll* | object | null |
| question* | string |
| multiple_choice* | boolean |
| voters* | integerTotal votes. Telegram rounds large counts, so this is approximate above ~1000. |
| options* | array<object> |
| text* | string |
| percent* | numberShare of the vote, 0–100. |
Platform fields, identical on every endpoint — what they mean.
curl "https://api.endpointry.com/v1/telegram/messages?channel=telegram" \
-H "Authorization: Bearer sk_live_..."{
"meta": {
"request_id": "req_7729f93d3facf68ff83e5c50",
"as_of": "2026-08-02T12:00:00.000Z",
"cache": "MISS",
"pagination": {
"next_cursor": "MzAwYzM4ZTU6NDUz",
"limit": 20,
"returned": 1
}
},
"data": {
"messages": [
{
"id": 454,
"url": "https://t.me/telegram/454",
"date": "2026-07-19T17:58:20.000Z",
"author": "Telegram News",
"text": "For all the details on these new features, check out our blog:\nhttps://telegram.org/blog/communities-editor-invisible-messages",
"html": "<p>For all the details on these new features, check out our blog:<br><a href=\"https://telegram.org/blog/communities-editor-invisible-messages\">https://telegram.org/blog/communities-editor-invisible-messages</a></p>",
"views": 1090000,
"forwarded_from": null,
"link_preview": {
"url": "https://telegram.org/blog/communities-editor-invisible-messages",
"title": "Rich Text Editor, Communities, Ephemeral Messages in Groups",
"name": "Telegram",
"description": "Introducing a rich text editor to format and generate text.",
"image_url": null
},
"photos": [],
"videos": [],
"sticker": null,
"document": null,
"poll": null
}
]
}
}What teams build with it
- News and OSINT monitoring across public channels
- Trend detection and alerting on message content
- Archiving public channels with complete media metadata
- Brand safety: track what public channels say, structured
Frequently asked questions
How far back can I go?
All the way. Pagination walks backwards with meta.pagination.next_cursor and ends with null at the channel’s first message.
What media is included?
Photos and albums, videos, stickers, file attachments with type, size and duration, polls with per-option shares, link previews, and the origin of forwarded posts.
Is the HTML safe to render?
Yes. The html field is limited to a safe subset of formatting tags with href as the only attribute — no scripts, no event handlers.
How exact are view counts?
Published as numbers. Telegram rounds large counts at the source, so treat values above a few thousand as close approximations.
More from the Telegram API
Try it with a free trial
One subscription covers the whole catalog — this endpoint included.