Models
All response models, as defined in
telegram_me/schemas.
The same definitions are available as JSON Schema in /openapi.json.
Optional fields are always present in responses and set to null when
missing (the feed returns raw posts and omits them instead).
ChannelBody
Returned by /v1/body.
| Field |
Type |
Description |
channel |
Channel |
Profile |
content.posts |
Post[] |
Posts on the page, oldest first |
meta |
Meta |
Pagination cursors |
More
Returned by /v1/more: posts (Post[]) and meta (Meta).
Channel
| Field |
Type |
Description |
username |
string |
Username without @ |
title |
ParsedAndRaw |
Display name |
description |
ParsedAndRaw | null |
Bio |
avatar |
URL | null |
Profile picture |
counters.subscribers |
string |
e.g. 10.3M |
counters.photos, videos, files, links |
string | null |
Media counters shown by Telegram |
labels |
string[] | null |
Header badges, e.g. verified |
| Field |
Type |
Description |
offset.before |
integer | null |
Pass to /v1/more/{channel}/before/{value} for older posts |
offset.after |
integer | null |
Pass to /v1/more/{channel}/after/{value} for newer posts |
Post
| Field |
Type |
Description |
id |
integer |
Post ID within the channel |
content |
Content |
Everything the post contains |
footer |
Footer |
Views, date, author |
forwarded |
Forwarded | null |
Original source of a forward |
view |
string |
Telegram's opaque view token |
Content
| Field |
Type |
Description |
text |
Text | null |
Message text |
media |
MediaItem[] | null |
Photos, videos, voice messages, round videos, stickers |
poll |
Poll | null |
Poll (full parser only) |
inline |
Inline[] | null |
Inline keyboard buttons, all rows flattened in order |
reply |
Reply | null |
Replied-to message (full parser only) |
preview_link |
PreviewLink | null |
Link preview card (full parser only) |
reacts |
Reacts[] | null |
Reactions (full parser only) |
With PARSER_MODE=simplified only text
(without entities), media and inline are extracted.
Text
| Field |
Type |
Description |
string |
string |
Plain text, \n for line breaks |
html |
string |
Original markup |
entities |
TextEntity[] | null |
Formatting (full parser only) |
TextEntity
| Field |
Type |
Description |
type |
enum |
bold, italic, underline, strikethrough, code, pre, spoiler, hashtag, url, text_link, emoji, animoji |
offset |
integer |
Start in Text.string (UTF-16 is not used: Python string indices) |
length |
integer |
Length of the visible text |
url |
URI | null |
Link target (text_link, url) or emoji image (emoji, animoji) |
language |
string | null |
Reserved for pre blocks |
| Field |
Type |
Description |
type |
enum |
image, video, gif, voice, roundvideo, sticker |
url |
URL | null |
File URL; null when Telegram does not expose it |
thumb |
URL | null |
Thumbnail (video, round video, sticker) |
duration |
{formatted, raw} | null |
formatted as shown (1:15), raw in seconds |
waves |
string | null |
Encoded waveform of a voice message |
available |
boolean | null |
false when the file is too large to be served by t.me |
A video without a duration is reported as gif.
Poll
| Field |
Type |
Description |
question |
string |
Question |
type |
string | null |
As shown by Telegram, e.g. Anonymous Poll |
votes |
string | null |
Vote counter as shown |
options[] |
{name: string, percent: integer} |
Answers with their share |
Inline
| Field |
Type |
Description |
title |
string |
Button text |
url |
URI |
Target (https://…, tg://…) |
Reply
| Field |
Type |
Description |
to_message |
integer |
ID of the replied-to post |
name |
ParsedAndRaw |
Its author |
text |
ParsedAndRaw |
Its text (preview) |
cover |
URI | null |
Its thumbnail |
PreviewLink
| Field |
Type |
Description |
url |
URL |
Linked page |
site_name, title |
string | null |
Card header |
description |
ParsedAndRaw | null |
Card text |
thumb |
URL | null |
Card image |
Reacts
| Field |
Type |
Description |
type |
enum |
emoji, custom_emoji, telegram_stars |
count |
string |
Counter as shown (14.2K) |
emoji |
string | null |
The emoji (⭐ for Stars) |
emoji_id |
string | null |
Custom emoji ID |
emoji_image |
URL | null |
Emoji sprite |
| Field |
Type |
Description |
views |
string | null |
View counter |
edited |
boolean |
Post was edited |
author |
ParsedAndRaw | null |
Signature, when the channel signs posts |
date |
{string, unix} |
Publication time |
Forwarded
| Field |
Type |
Description |
name |
ParsedAndRaw |
Source channel or user; empty strings when the sender hides their name |
url |
URL | null |
Link to the source |
author |
ParsedAndRaw | null |
Signature next to the source (added in 2.0) |
Preview
Returned by /v1/preview: {"channel": PreviewChannel}.
| Field |
Type |
Description |
title |
string |
Name |
subscribers |
string |
As displayed, e.g. 10 281 023 subscribers |
description |
string | null |
Plain-text bio |
avatar |
URL | null |
Picture |
is_verified |
boolean |
Verified badge |
/v1/previews returns {username: Preview}.
FeedResponse
{"result": [ … ]} — see Feed.
ParsedAndRaw
{"string": string, "html": string} — plain text and original markup.