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": "Default", "category": "Telegram Premium", "rate": "12350.00", "min": "1", "max": "1" } ]

POST /api/v2 · action=add

Places an order. Debits your wallet immediately and returns an order id to poll with status.

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

Insufficient balance returns {"error":"Not enough funds"}; no order is created.

POST /api/v2 · action=status

Returns the state of one order (order=ID) or several (orders=1,2,3). Stars and Premium complete directly; Sessions include a result with the download link.

Example request
$ curl -d "key=tgfather_········&action=status&order=23501" https://tgfather.com/api/v2
Example response
{ "charge": "1.55", "start_count": "0", "status": "Completed", "remains": "0", "currency": "USD" }
Multiple: orders=1,2
{ "1": { "charge": "1.55", "status": "Completed", "currency": "USD" }, "2": { "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 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": 23501 }

Telegram Premium live

One service per duration: 2 (3 months), 3 (6 months), 4 (12 months). link is the recipient's @username; quantity=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": 23502 }

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

An ad carries a creative and targeting, so add takes extra fields:

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)
cpmrequiredBid: USD price per 1,000 views (Telegram runs an auction; a higher CPM wins more impressions). Telegram's floor applies at placement.
ad_titlerequiredAd title (≤ 40 chars, shown in the sponsored card)
ad_textrequiredAd text / message (≤ 160 chars, one line: no line breaks, shorteners or banned verticals)
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.

Order a $20 channel ad (CPM $2, auto-targeted)
$ 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": 23503, "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. Listed with max: "0" until ad ordering is enabled.

Telegram Sessions

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": 23540 }
Fetch the delivery link
$ curl -d "key=tgfather_········&action=status&order=23540" \ https://tgfather.com/api/v2 { "charge": "6.60", "status": "Completed", "currency": "USD", "result": { "downloads": [ { "format": "bundle", "url": "https://tgfather.com/api/bundle/<token>" } ] } }

If stock is lower than ordered, status returns Partial and only the shipped quantity is charged. Web store: /telegram-accounts.

Downloading the bundle: the url is on our domain and requires your API key — fetch it with the same Authorization: Bearer <key> (or X-API-Key) header, e.g. curl -H "X-API-Key: <key>" -O <url>. The token is single-scope and ownership-checked, so a credential-less request is refused.

Aged Telegram Hub live

Aged Telegram channels, groups, and bots, one service per kind. 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

Delivery takes 3 steps: the buyer must join a private invite before ownership can be transferred.

Step 1: Place the order with the buyer's @username
$ curl -d "key=tgfather_········&action=add&service=8&link=@buyer123" \ https://tgfather.com/api/v2 { "order": 41022 }
Step 2: Check the status for the invite link, then send it to the buyer to JOIN
$ curl -d "key=tgfather_········&action=status&order=41022" \ 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, then call action=confirm&order=41022" } }
Step 3: Once the buyer has joined, call confirm to transfer the channel
$ curl -d "key=tgfather_········&action=confirm&order=41022" \ https://tgfather.com/api/v2 { "order": 41022, "status": "Completed" }

If the buyer hasn't joined yet, confirm returns status: "In progress" and asks them to join first; call it again once they have. Unclaimed orders complete automatically after 3 days. Web store: /telegram-aged-channels-groups-robots.

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