Telegram Downloader API for direct download links
Send a public t.me post link, get back a direct link your users can download or stream in the browser. No Telegram account, no MTProto client, and large files work, not only the 20 MB the Bot API allows.
- Highest quality Telegram stores
- Resumable, seekable links
- Only successful calls are counted
curl -X POST https://telegramdownloader.net/api/v1/resolve \ -H "X-Api-Key: tdk_your_key" \ -H "Content-Type: application/json" \ -d '{"url":"https://t.me/durov/537"}'
const res = await fetch("https://telegramdownloader.net/api/v1/resolve", { method: "POST", headers: { "X-Api-Key": process.env.TD_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://t.me/durov/537" }), }); const { download_url } = await res.json();
import requests r = requests.post("https://telegramdownloader.net/api/v1/resolve", headers={"X-Api-Key": TD_KEY}, json={"url": "https://t.me/durov/537"}) print(r.json()["download_url"])
$ch = curl_init('https://telegramdownloader.net/api/v1/resolve'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-Api-Key: ' . $key, 'Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode(['url' => 'https://t.me/durov/537']), ]); $link = json_decode(curl_exec($ch), true)['download_url'];
{
"download_url": "https://dl.telegramdownloader.net/dl/ab12cd…",
"stream_url": "https://dl.telegramdownloader.net/s/ab12cd…",
"file_name": "interview-1080p.mp4",
"file_size": 734003200,
"mime_type": "video/mp4",
"expires_at": "2026-10-22T12:00:00+00:00",
"usage": { "used": 41, "limit": 1000, "remaining": 959 }
}
How the Telegram download API works
Three steps, one endpoint. Most teams have it running in an afternoon.
Send the post link
POST a public Telegram post URL to
/v1/resolvewith your key. Add your user's IP address if the link is for them.We fetch the file
Our servers pull the original file from Telegram and prepare a signed link on a fast stream server. You do not need a Telegram account.
Hand over the link
You get a download URL and a stream URL. Your users open it in a browser, a video player or a download manager.
Built for apps that move real files
Telegram bots, media apps, archiving tools and monitoring dashboards use it to turn posts into files without running their own Telegram infrastructure.
Direct download links
A plain HTTPS link that starts the download immediately. No redirects through Telegram, no app needed on the other end.
Stream in the browser
Every video and audio file also gets a stream link that plays inline, so you can preview before anyone downloads a gigabyte.
Pause, resume, seek
Links support HTTP Range requests. Download managers resume broken transfers and players jump to any point in a video.
Links that cannot be farmed
Each link is signed, expires on time and has a cap on how many IP addresses can use it. Your quota is not drained by someone resharing it.
Dedicated capacity
Higher plans can run on their own stream server, so your traffic never waits behind anyone else's.
Usage you can see
A dashboard with every call, a /v1/usage endpoint and quota headers on each response. No surprises at the end of the month.
Simple pricing per request
Pick the number of successful calls you need each month. Downloads themselves are not metered, so a 2 GB video costs the same single request as a photo.
Starter
- 100 successful requests
- 30 requests per minute
- Download and stream links
- Unused requests carry over on renewal
Developer
- 500 successful requests
- 60 requests per minute
- Download and stream links
- Unused requests carry over on renewal
Growth
- 1,500 successful requests
- 120 requests per minute
- Download and stream links
- Unused requests carry over on renewal
Pro
- 5,000 successful requests
- 220 requests per minute
- Download and stream links
- Unused requests carry over on renewal
Business
- 20,000 successful requests
- 300 requests per minute
- Download and stream links
- Unused requests carry over on renewal
Scale
- 60,000 successful requests
- 300 requests per minute
- Download and stream links
- Unused requests carry over on renewal
New accounts get 10 free requests after confirming their email. Pay with crypto. Your plan switches on automatically once the transfer is confirmed.
Questions developers ask
What counts as a request?
One successful call to /v1/resolve that returns a download link. Failed calls are not counted: an invalid link, a deleted post, a post with no file or a temporary error on our side all leave your balance untouched. Downloading the file itself is free, however many bytes it is.
Which Telegram links work?
Links to a single post in a public channel or public group, like https://t.me/durov/537. Private chats, invite links and channels that switched on Telegram's content protection do not work, and the API tells you which case you hit.
How long does a download link last?
Every response includes expires_at. Links are signed and stop working after that time, and each link also has limits on how many different IP addresses can use it, so a link pasted on a public forum cannot be drained by strangers.
Can my users download straight from the link?
Yes. That is the point. Send the end user's IP address in the ip field and hand them the link. They download or stream it directly from our servers, at full speed, with pause and resume supported.
What quality do I get?
The highest quality Telegram stores for that post. If a channel uploaded a 1080p video, you get the 1080p file, not a compressed preview.
What happens when my requests run out?
New calls return 402 quota_exceeded. We email you at 80% and again at 100%, and /v1/usage shows your balance at any time. Buy a plan again and the new requests are added straight away.
Do unused requests carry over?
Yes, as long as you buy again before your current period ends. The new requests are added to what you have left and the 30-day period starts again.
How do I pay?
With crypto, using a stablecoin or TON. You pick a plan and a network, send the exact amount shown to the address shown, and the plan switches on by itself once the transfer is confirmed, usually within a few minutes.
Ready to try it?
Create an account, confirm your email and make your first call in a few minutes.