Telegram support
Home / API

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.

Endpointhttps://tgfather.com/api/v2
HTTP methodPOST · form-encoded params
Authkey=<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.
ResponseJSON
CurrencyUSD · 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.

Example request
$ curl -d "key=tgfather_········&action=services" https://tgfather.com/api/v2
Example response
[ { "service": 1, "name": "Telegram Stars", "type": "Default", "category": "Telegram Stars", "rate": "15.45", "min": "50", "max": "1000000" }, { "service": 2, "name": "Telegram Premium 3 months", "type": "Package", "category": "Telegram Premium", "rate": "12350.00", "min": "1", "max": "1" } ]

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.

ParametersDescription
serviceService id from services
linkTarget: the recipient @username / profile link (Stars, Premium, Aged, Ads)
quantityAmount: # of Stars / accounts, or 1 for a per-unit product
Example request
$ curl -d "key=tgfather_········&action=add&service=1&link=@durov&quantity=100" \ https://tgfather.com/api/v2
Example response
{ "order": "Kp3m9x" }

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.

Example request
$ curl -d "key=tgfather_········&action=status&order=Kp3m9x" https://tgfather.com/api/v2
Example response
{ "charge": "1.55", "start_count": "0", "status": "Completed", "remains": "0", "currency": "USD" }
Multiple: orders=Kp3m9x,Rt7bw2
{ "Kp3m9x": { "charge": "1.55", "status": "Completed", "currency": "USD" }, "Rt7bw2": { "charge": "12.35", "status": "In progress", "currency": "USD" } }

POST /api/v2 · action=balance

Returns your spendable wallet balance.

Example request
$ curl -d "key=tgfather_········&action=balance" https://tgfather.com/api/v2
Example response
{ "balance": "1000.00", "currency": "USD" }

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:

A session service in the services list
{ "service": 812, "name": "Session · Indonesia · 1-2 years", "type": "Default", "category": "Telegram Sessions", "rate": "1320.00", "min": "1", "max": "5400" }
Order 5 accounts (link unused)
$ curl -d "key=tgfather_········&action=add&service=812&quantity=5" \ https://tgfather.com/api/v2 → { "order": "Fk9Lbr" }
Fetch the delivery link
$ curl -d "key=tgfather_········&action=status&order=Fk9Lbr" \ https://tgfather.com/api/v2 → { "charge": "6.60", "status": "Completed", "currency": "USD", "result": { "downloads": [ { "format": "bundle", "url": "https://tgfather.com/api/resell/dl/<token>" } ] } }

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.

ServiceKind
6Aged bot
7Aged group
8Aged 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.

Step 1: Place the order with the buyer's @username (optional country in answer_number)
$ curl -d "key=tgfather_········&action=add&service=8&link=@buyer123&answer_number=US" \ https://tgfather.com/api/v2 → { "order": "Mx2pQ7" }
Step 2: Poll status for the invite link, then send it to the buyer to JOIN
$ curl -d "key=tgfather_········&action=status&order=Mx2pQ7" \ https://tgfather.com/api/v2 → { "charge": "25.00", "status": "In progress", "currency": "USD", "result": { "recipient": "@buyer123", "invite_link": "https://t.me/+AbCdEf…", "instructions": "Have the recipient open this invite and JOIN — ownership transfers automatically once they do." } }
Optional — trigger the transfer immediately once the buyer has joined
$ curl -d "key=tgfather_········&action=confirm&order=Mx2pQ7" \ https://tgfather.com/api/v2 → { "order": "Mx2pQ7", "status": "Completed" }

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.

ServiceProduct
1Telegram Stars
Buy 100 Stars
$ curl -d "key=tgfather_········&action=add&service=1&link=@durov&quantity=100" \ https://tgfather.com/api/v2 → { "order": "Kp3m9x" }

Telegram Premium live

One service per duration: 2 (3 months), 3 (6 months), 4 (12 months). Type Package — a fixed plan, so a panel asks only for the link (recipient @username); quantity is always 1.

ServicePlan
2Premium, 3 months
3Premium, 6 months
4Premium, 12 months
Gift 3 months
$ curl -d "key=tgfather_········&action=add&service=2&link=@durov&quantity=1" \ https://tgfather.com/api/v2 → { "order": "Rt7bw2" }

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.

ServiceProduct
5Telegram 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:

FieldRequiredMeaning
linkrequiredDestination: the public @channel, bot or t.me link the ad promotes
quantityrequiredInitial budget in whole USD (charged from your balance; min 5, max 5000)
cpmoptionalBid: 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_titleoptionalAd title (≤ 40 chars, shown in the sponsored card). Auto-written from your destination if omitted.
ad_textoptionalAd text / message (≤ 160 chars, one line: no line breaks, shorteners or banned verticals). Auto-written if omitted.
targetoptionalComma 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.

Minimal order — just budget + destination (creative + CPM auto-filled)
$ curl -d "key=tgfather_········&action=add&service=5&link=@mychannel&quantity=20" \ https://tgfather.com/api/v2 → { "order": "Qz4dh8", "charge": 22 }
Full control — your own creative, CPM and targeting
$ curl -d "key=tgfather_········&action=add&service=5&link=@mychannel&quantity=20&cpm=2&ad_title=North+Ledger&ad_text=One+sourced+market+note+every+weekday.+18000+readers." \ https://tgfather.com/api/v2 → { "order": "Qz4dh8", "charge": 22 }

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.

StatusMeaning
PendingAccepted, not started yet.
In progressBeing fulfilled.
CompletedDelivered. Sessions carry the result link.
PartialFewer delivered than ordered; you're charged only for what shipped.
CanceledNot delivered, refunded to your wallet.

Errors

Errors are returned as JSON with an error string (HTTP 200, per reseller-API convention).

{ "error": "Not enough funds" }
MessageMeaning
Invalid API keyMissing or unknown key.
Invalid actionUnknown action.
Invalid serviceNo such service id.
Not enough fundsWallet balance too low. Top up.
Amount below minimum / above maximumquantity outside the service's min/max.
Incorrect order IDThe order isn't yours or doesn't exist.

Rate limits

A per-IP token bucket applies to the endpoint.

EndpointLimit
POST /api/v2120 requests / minute