Reseller API
The standard reseller-panel API: one endpoint, a key, an action, and JSON responses. Add tgfather as a provider and resell Telegram Stars, Premium, Sessions, Aged channels, and Ads.
| Endpoint | https://tgfather.com/api/v2 |
|---|---|
| HTTP method | POST · form-encoded params |
| Auth | key=<your key> in the POST body (or Authorization: Bearer <key>). Never put the key in the URL query — it leaks into access logs and is rejected. |
| Response | JSON |
| Currency | USD · charged to your wallet balance |
Charge: charge = rate × quantity / 1000. Per-unit products (Premium) set rate = unit price × 1000, so one order costs rate / 1000.
POST /api/v2 · action=services
Every service with its id, name, price (rate, per 1,000) and min/max. Service ids are fixed and permanent. Only in-stock services are returned: a sold-out session is omitted until it restocks, and its id never changes.
POST /api/v2 · action=add
Places an order. Debits your wallet immediately and returns a short random order code (e.g. Kp3m9x) to poll with status. The code — not a sequential number — is your order handle everywhere.
| Parameters | Description |
|---|---|
| service | Service id from services |
| link | Target: the recipient @username / profile link (Stars, Premium, Aged, Ads) |
| quantity | Amount: # of Stars / accounts, or 1 for a per-unit product |
Insufficient balance returns {"error":"Not enough funds"}; no order is created.
POST /api/v2 · action=status
Returns the state of one order (order=CODE) or several (orders=Kp3m9x,Rt7bw2). Stars and Premium complete directly; Sessions and Aged include a result with the download / invite.
orders=Kp3m9x,Rt7bw2POST /api/v2 · action=balance
Returns your spendable wallet balance.
Telegram Accounts live
Ready-to-use accounts, one service per country and age band (e.g. Indonesia · 1-2 years). quantity = number of accounts; link unused. Delivery is ZIP-only: the order's status returns one bundle ZIP for the whole batch.
Pricing is automatic: the rate is the best live price for that (country, age), refreshed as stock moves, so there is no fixed price list to maintain. max is the live quantity available; a sold-out SKU drops off the list until it restocks, and its id never changes. Session ids start at 10, one per (country, age band), category Telegram Sessions:
services listlink unused)If stock is lower than ordered, status returns Partial and only the shipped quantity is charged. Web store: /telegram-accounts.
The bundle is one ZIP for the whole batch, each account under sessions/ (Telethon) + tdata/ (Telegram Desktop). The url is token-scoped — the random token is the credential, so a panel that stores a bare URL fetches it with no header: curl -O <url>.
Aged Telegram Hub live
Aged Telegram channels, groups, and bots, one service per kind (type Poll). We deliver an available aged chat of that kind (we pick the year). Order quantity = 1 and set link to the buyer's @username; the chat is transferred to that user. Category Aged Telegram Hub.
| Service | Kind |
|---|---|
6 | Aged bot |
7 | Aged group |
8 | Aged channel |
Optional owner country: pass answer_number = a country (US, germany, or a dial like +1) to prefer a chat owned in that country. Leave it blank / anything unrecognized and we pick any in-stock country.
Delivery: the buyer joins a private invite, then ownership transfers. This happens automatically once they join — polling status is enough. The confirm action just triggers the transfer sooner and is optional.
answer_number)You don't have to call confirm — once the buyer joins, we transfer ownership automatically and status flips to Completed. Web store: /telegram-aged-channels-groups-robots.
Telegram Stars live
One service. link = recipient @username or profile link; quantity = number of Stars (min 50). rate is per 1,000.
| Service | Product |
|---|---|
1 | Telegram Stars |
Telegram Ads live
Official Telegram Sponsored Messages, placed for you under the agency model: you resell ad placements and never manage an ad account yourself.
| Service | Product |
|---|---|
5 | Telegram Ads |
Ads order like every other service — send only service, link and quantity and we fill the rest with sane defaults you can refine. Each order is reviewed before it is submitted to Telegram, so a default draft never runs unchecked. Override any field below to take full control:
| Field | Required | Meaning |
|---|---|---|
link | required | Destination: the public @channel, bot or t.me link the ad promotes |
quantity | required | Initial budget in whole USD (charged from your balance; min 5, max 5000) |
cpm | optional | Bid: USD price per 1,000 views (Telegram runs an auction; a higher CPM wins more impressions). Defaults to $1.50 if omitted. Telegram's floor applies at placement. |
ad_title | optional | Ad title (≤ 40 chars, shown in the sponsored card). Auto-written from your destination if omitted. |
ad_text | optional | Ad text / message (≤ 160 chars, one line: no line breaks, shorteners or banned verticals). Auto-written if omitted. |
target | optional | Comma list of channels to show the ad in (public, 1,000+ subscribers). Omit it and we auto-scan relevant public channels for you from what you promote. |
Total price. You are charged quantity plus our flat service fee: total = quantity × (1 + fee_pct/100). Read the current fee_pct from GET https://tgfather.com/api/ads/rate. The exact total debited is returned as charge (USD) in the add response.
We place the ad for you. Your budget is refundable until it is submitted to Telegram; after that it is final. Poll action=status for the state (queued, in review, active / declined). Every ad must pass Telegram's advertising policy.
Order statuses
The status field uses the standard reseller vocabulary.
| Status | Meaning |
|---|---|
| Pending | Accepted, not started yet. |
| In progress | Being fulfilled. |
| Completed | Delivered. Sessions carry the result link. |
| Partial | Fewer delivered than ordered; you're charged only for what shipped. |
| Canceled | Not delivered, refunded to your wallet. |
Errors
Errors are returned as JSON with an error string (HTTP 200, per reseller-API convention).
| Message | Meaning |
|---|---|
| Invalid API key | Missing or unknown key. |
| Invalid action | Unknown action. |
| Invalid service | No such service id. |
| Not enough funds | Wallet balance too low. Top up. |
| Amount below minimum / above maximum | quantity outside the service's min/max. |
| Incorrect order ID | The order isn't yours or doesn't exist. |
Rate limits
A per-IP token bucket applies to the endpoint.
| Endpoint | Limit |
|---|---|
| POST /api/v2 | 120 requests / minute |