Rage TG Downloader API
Save Telegram posts, albums and stories from your own application. The API uses the same engine, the same permissions and the same credit balance as the bot.
Getting access
- Open the Telegram bot and send /start.
- Redeem an API license key:
/redeem YOUR-KEY. It activates API Access and adds 150 credits to your single main balance. - Send
/api newto create an API key. The key is shown once — store it safely.
Authentication
Every request needs your API key in the Authorization header. Requests without a valid, active key are refused with 401.
Authorization: Bearer rage_sk_xxxxxxxxxxxxxxxxxxxxxxxxCredits and quota
- There is exactly one credit balance, shared by the bot and the API.
- Premium accounts spend 1 credit per delivered media file. Nothing else is charged.
- Lifetime accounts are unlimited and are never charged.
- “API quota used” is a cumulative statistic of credits spent through the API — it is not a second balance.
- When the balance is insufficient the request returns 402; API Access itself stays active.
Delivery modes
The API works for websites, mobile apps, servers and Telegram bots. Choose per request with the delivery field:
"files"(default) — the media is returned as expiring signed download URLs. Display or download them straight from your website or app; no Telegram bot needed."telegram"— the media is delivered into your own Telegram chat with the bot. Requires you to have opened the bot with/startonce.
File URLs stay valid for 24 hours and are unlisted — fetch or re-host them within that window if you need them longer.
GET /api/public/v1/me
Your plan, current balance, cumulative API quota used and the delivery modes this key can use.
curl https://downloaderr.lovable.app/api/public/v1/me \
-H "Authorization: Bearer YOUR_API_KEY"
{
"plan": "PREMIUM",
"api_access": true,
"credits": 148,
"unlimited": false,
"api_quota_used": 2,
"delivery_modes": ["files", "telegram"],
"default_delivery": "files"
}POST /api/public/v1/download
Saves one Telegram link. Supported links are public posts (https://t.me/channel/123), private posts (https://t.me/c/1234567890/123) and stories (https://t.me/channel/s/5). Private posts require your own Telegram account to be connected with /login — Telegram permissions are never bypassed. Telegram delivery always goes to your own chat; the API cannot send content to anyone else.
# Website / app: get download URLs back
curl -X POST https://downloaderr.lovable.app/api/public/v1/download \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://t.me/durov/123","delivery":"files"}'
{
"job_id": "6f1c…",
"content_type": "album",
"media_count": 3,
"partial": false,
"truncated": false,
"credits_charged": 3,
"delivered_to": "files",
"files": [
{
"kind": "photo",
"filename": "telegram-123.jpg",
"size": 184320,
"mime": "image/jpeg",
"url": "https://…/api-media/…?token=…",
"expires_in": 86400
}
]
}
# Telegram bot integration: delivered to your own chat
curl -X POST https://downloaderr.lovable.app/api/public/v1/download \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://t.me/durov/123","delivery":"telegram"}'In a website you can render files[].url directly in an img /video tag, or link to it as a download.
GET /api/public/v1/jobs
Your most recent jobs. Optional ?limit= between 1 and 50 (default 20).
curl "https://downloaderr.lovable.app/api/public/v1/jobs?limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"jobs": [
{
"id": "6f1c…",
"status": "COMPLETED",
"content_type": "photo",
"media_count": 1,
"error_code": null,
"created_at": "2026-01-01T10:00:00.000Z",
"completed_at": "2026-01-01T10:00:04.000Z"
}
]
}Errors
| HTTP | code | Meaning |
|---|---|---|
| 400 | INVALID_BODY / UNSUPPORTED_LINK | Bad JSON body, or the link is not a supported Telegram link. |
| 401 | MISSING_TOKEN / INVALID_KEY / KEY_REVOKED | No key, unknown key, or the key was revoked. |
| 402 | QUOTA_EXCEEDED | Not enough credits for this request. |
| 403 | API_ACCESS_INACTIVE / ACCESS_DENIED / BANNED | API access is off, Telegram refused access, or the account is suspended. |
| 404 | CONTENT_UNAVAILABLE | The post or story no longer exists. |
| 409 | NO_TELEGRAM_CHAT / DUPLICATE | "telegram" delivery requested but the bot chat was never started (use "files"), or the same link is already in flight. |
| 429 | RATE_LIMITED | Per-minute request limit reached. |
| 502 | TEMPORARY_TELEGRAM_ERROR | Telegram was temporarily unavailable — retry later. |
| 503 | API_DISABLED | The API is temporarily disabled. |
{ "error": { "code": "QUOTA_EXCEEDED", "message": "…" } }Limits
- Requests per minute per API key are set by the administrator (30 by default).
- One save request per account runs at a time.
- Keys can be revoked at any time with
/api revoke KEY_ID.