List posts from a Telegram channel · Telegram API
Returns recent public posts from a Telegram channel, newest first: text, views, reactions, media and forwards. Groups are not supported. Paginate with `cursor`.
Using ChatGPT, Claude Code or another client? See the setup steps
curl https://api.unifapi.com/telegram/channels/{username}/posts \
-H "Authorization: Bearer $UNIFAPI_KEY"Parameters
- usernamepathrequired
- Public Telegram username of the channel or group, with or without a leading @.
- cursorquery
- Opaque pagination cursor from a previous response's `pagination.next_cursor`. Omit for the first page.
- The parameter for this Telegram operation. Use the URL-visible slug or id described in the docs.
This operation is part of the Telegram API in the social platforms category. It uses the same Bearer token, request tracing, error model, and billing envelope as every UnifAPI endpoint, so agents can switch between platforms without custom per-vendor glue code.
Use it when a workflow needs Telegram public data alongside other social networks, but should still keep one API key, one account balance, and one predictable JSON contract.
Common agent workflows
- Fetch canonical public Telegram content for summarization, ranking, monitoring, or enrichment.
- Attach engagement, author, media, and source metadata to an agent workflow.
- Give an AI agent a stable Telegram data source without building a per-platform integration.
- Normalize Telegram responses into the same UnifAPI envelope used across the catalog.
Unified envelope, platform-native fields
- List-style responses return `data` as an array of top-level records plus optional `pagination` for continuation tokens or cursors.
- The operation has a 3 credits ($0.003) minimum charge, so `billing.records_charged` can be higher than the visible records returned.
- If the workspace balance cannot cover every result, the response can be truncated and `billing.truncated_due_to_balance` tells the caller why.
Response status codes
Billing
This operation charges 1 credit per billable record, with a 3 credits ($0.003) operation minimum. Public responses include billing metadata with credits charged, records charged, and remaining workspace balance. Incorrect Credit deductions caused by platform failures can be restored as billing corrections.
Errors and retries
Authentication, validation, rate-limit, not-found, and provider errors use the unified UnifAPI error format. Agents should log `request_id`, retry only retryable failures, and treat invalid API keys, disabled keys, and expired keys as the same public `unauthorized` error type.
Fields on each record in data
A successful List posts from a Telegram channel call returns data as an array; each record carries these fields.
- post_idstring | null
- Unique post ID within the channel.
- textstring | null
- Post text as simplified HTML (<br> line breaks, <a href> links, custom tg-emoji expanded to unicode, common HTML entities decoded so arrows and quotes read naturally in JSON). Null if the post contains only media.
- published_atnumber | null
- ISO 8601 publication timestamp. Unix seconds.
- viewsnumber | null
- View count from the public feed. Telegram may abbreviate large values (e.g. 1.13M → 1130000). Null for very recent posts.
- forwarded_fromstring | null
- Original channel name if this post was forwarded.
- reply_toobject | null
- Reply/quote preview when this post replies to another channel message; null otherwise.
- photo_urlsstring[]
- Photo URLs from Telegram CDN. May expire over time; download promptly if needed.
- video_urlstring | null
- Video URL if the post contains a video. May expire over time; download promptly if needed.
- reactionsobject[]
- Reaction counts shown on the public preview page. Empty when Telegram omits them for a post.
More Telegram operations
Combine endpoints from the same platform, then join the results with other UnifAPI categories without changing authentication or response parsing.
Get a Telegram channel or group
Returns a public Telegram channel or group by username: title, description, subscriber or member count, online count and avatar. Returns `not_found` when the username does not exist or the entity is restricted.
Get a Telegram channel post
Returns one public post from a Telegram channel by channel username and post id (the number at the end of a t.me link). Returns `not_found` when the post does not exist.