LurkAPI
Docs · Post

Post

One public channel post by link, with text, views, media, links and reactions.

1 credit per callFresh within 10 minutesMCP tool: telegram_post
GEThttps://api.lurkapi.com/v1/telegram/post

Example responseView as markdown

When to use this

Use it to check one post's reach, or to read a post someone shared. Pass the post's t.me link.

Deleted posts, unknown channels and posts from channels that don't allow embedding return 404 not_found.

Parameters

All parameters go in the query string.

ParameterDescription
url
stringrequired
The post's link, e.g. https://t.me/telegram/441 (t.me/s/… links work too).
Example
https://t.me/telegram/441

Example request

Replace YOUR_API_KEY with your key, or set LURKAPI_KEY for the code. Get a free key.

Language

Example response

A real response from this endpoint, captured from the live API and trimmed to a couple of items. Strings over 96 characters (mostly signed media URLs) are cut short and end in ….

Show the example response (1 KB)
{
  "success": true,
  "credits_remaining": 999966,
  "credits_charged": 1,
  "id": 441,
  "url": "https://t.me/telegram/441",
  "channel": "telegram",
  "date": "2026-05-14T16:08:31.000Z",
  "text": "Bot-to-Bot Communication. Bots are now able to respond to other bots, no…",
  "html": "<b>Bot-to-Bot Communication.</b> Bots are now able to respond to <b>othe…",
  "views": 1500000,
  "viewsText": "1.5M",
  "author": null,
  "edited": false,
  "service": false,
  "forwardedFrom": null,
  "replyTo": null,
  "thumbnailUrl": "https://cdn1.telesco.pe/file/B0NPOJRstsIT_652t2bWmv8nno7P2mpJi-rWgn5Czfy…",
  "media": [
    {
      "type": "video",
      "url": "https://cdn1.telesco.pe/file/c01503a63e.mp4?token=bBkhJeEOHNXAycjKLlAlxG…",
      "thumbnailUrl": "https://cdn1.telesco.pe/file/B0NPOJRstsIT_652t2bWmv8nno7P2mpJi-rWgn5Czfy…",
      "durationS": 6,
      "title": null
    }
  ],
  "linkPreview": null,
  "reactions": []
}

Response fields

Every field of a successful response. [] marks a list: a[].b is the b of each item in a. nullable fields can be null; optional fields can be missing.

Show all 39 fields
FieldTypeDescription
successtrueAlways true here; errors have success: false.
credits_remainingnumberYour balance after this call. On anonymous playground calls: free tries left today.
credits_chargednumberCredits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).
idnumberPost id, unique within the channel. Posts are numbered in order.
urlstringThe post on t.me, e.g. https://t.me/telegram/441.
channelstringThe channel's username, e.g. telegram.
datestringnullablePosted at, ISO 8601 (UTC).
textstringPost text (or media caption), plain, with line breaks. Empty if the post has none.
htmlstringnullablePost text as HTML: bold, italics, links, quotes. null if the post has no text.
viewsnumbernullableView count, as a number. Telegram rounds it ("1.2K" → 1200); null if not shown.
viewsTextstringnullableView count as Telegram shows it, e.g. "1.56M"; null if not shown.
authorstringnullableAuthor signature, on channels that sign posts; null otherwise.
editedbooleanThe post was edited after it was published.
servicebooleanA service message ("Channel created", "Channel photo updated"), not a real post.
forwardedFromobjectnullableWhere the post was forwarded from; null if it's original.
forwardedFrom.namestringName of the channel or person it was forwarded from.
forwardedFrom.urlstringnullableLink to the original post or channel; null for hidden accounts.
replyToobjectnullableThe post this one replies to; null if it isn't a reply.
replyTo.idnumbernullableId of the post it replies to; null if the link isn't a post link.
replyTo.urlstringLink to the post it replies to.
replyTo.authorstringnullableName shown on the quoted post.
replyTo.textstringnullableThe quoted post's text, shortened by Telegram; null if it has none.
thumbnailUrlstringnullableA preview image for the post: the first media's thumbnail, else the link preview's image; null if none.
mediaobject[]Photos, videos, files and stickers attached to the post, in order. Empty for text posts.
media[].typestringphoto, video, document (a file), audio (a music or podcast file) or sticker.
media[].urlstringnullableDirect file URL on Telegram's CDN, temporary. null for documents, audio, and videos too big for the web preview (open the post instead).
media[].thumbnailUrlstringnullablePreview image URL (the photo itself for photos), temporary; null if none.
media[].durationSnumbernullableVideo length in seconds; null for other media.
media[].titlestringnullableFile name or audio title, for documents and audio; null otherwise.
linkPreviewobjectnullableThe link preview card under the text; null if none.
linkPreview.urlstringThe linked page.
linkPreview.siteNamestringnullableSite name, e.g. "YouTube".
linkPreview.titlestringnullablePage title.
linkPreview.descriptionstringnullablePage description.
linkPreview.imageUrlstringnullablePreview image URL, temporary; null if none.
reactionsobject[]Reactions in Telegram's order (paid first, then most frequent). Empty if there are none.
reactions[].typestringemoji, custom_emoji (a Premium emoji) or paid (Telegram Stars).
reactions[].emojistringnullableThe emoji, e.g. "👍"; null for paid reactions and custom emoji without a standard look-alike.
reactions[].countnumberHow many, as a number. Telegram rounds large counts ("14.3K" → 14300).

Caching and freshness

Responses are cached for up to 10 minutes, so a repeat call within that window can return the same data. It still costs 1 credit.

Errors

Errors return { success: false, error, code, docs } with the HTTP status below. Validation errors, 401/402/429 rejections and 5xx failures are free; not_found is charged (how charging works). All error codes.

StatusCodeMeaning
401missing_api_keyNo API key. Send it in the x-api-key header.
401invalid_api_keyThe key is unknown or was revoked.
402insufficient_creditsNot enough credits for this call. Buy a pack or wait for tomorrow's top-up.
404not_foundThe endpoint, or the thing you asked for (ad, post, subreddit), doesn't exist. Charged when the platform was checked.
405method_not_allowedEndpoints take GET with query params.
429rate_limitedToo many calls at once. Wait for the retry-after seconds, then retry.
500internal_errorSomething broke on our side. Retry; 5xx errors are free.
502upstream_errorThe platform didn't give a usable answer. Retry; 5xx errors are free.
503upstream_busyAll our connections to the platform are busy. Retry in a few seconds; 5xx errors are free.
504upstream_timeoutThe platform took over 30 seconds to answer. Retry; timeouts are free.

Use it in Claude

Once LurkAPI is connected to Claude, this endpoint is the telegram_post tool. Ask in plain English, for example:

Ask Claude
Use LurkAPI's telegram_post with url "https://t.me/telegram/441" and summarize what you find.

Claude calls telegram_post with arguments like these, and each call costs 1 credit:

Tool arguments
{
  "url": "https://t.me/telegram/441"
}

Tool results skip nulls and empty lists to save tokens.