One endpoint, form-encoded POST, JSON back. Everything below is the whole surface — no second version, no SDK, no handshake.
Create an account and your key is generated with it. The same key works for every call below.
Create an account →Every service has a numeric service id, its own rate,
and its own min and max.
Send that id with a link and a quantity.
You get an order id back to track it with.
Take the whole reference with you. The Markdown copy is a fraction of this page in tokens, so it fits in a context window without being cut off halfway through the parameter list.
action=services
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | services |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=services"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'services', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "services",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "services", }),});const result = await res.json();
[
{
"service": 1,
"name": "Followers",
"type": "Default",
"category": "First Category",
"rate": "0.90",
"min": "50",
"max": "10000",
"refill": true,
"cancel": true
},
{
"service": 2,
"name": "Comments",
"type": "Custom Comments",
"category": "Second Category",
"rate": "8",
"min": "10",
"max": "1500",
"refill": false,
"cancel": true
}
]action=add
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | add |
| servicerequired | Service ID |
| linkrequired | Link to page |
| quantityrequired | Needed quantity |
| runsoptional | Runs to deliver |
| intervaloptional | Interval in minutes |
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | add |
| servicerequired | Service ID |
| linkrequired | Link to page |
| commentsrequired | Comments list separated by \r\n or \n |
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | add |
| servicerequired | Service ID |
| usernamerequired | Username |
| minrequired | Quantity min |
| maxrequired | Quantity max |
| postsoptional | Use this parameter if you want to limit the number of new (future) posts that will be parsed and for which orders will be created. If posts parameter is not set, the subscription will be created for an unlimited number of posts. |
| old_postsoptional | Number of existing posts that will be parsed and for which orders will be created, can be used if this option is available for the service. |
| delayrequired | Delay in minutes. Possible values: 0, 5, 10, 15, 20, 30, 40, 50, 60, 90, 120, 150, 180, 210, 240, 270, 300, 360, 420, 480, 540, 600 |
| expiryoptional | Expiry date. Format d/m/Y |
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | add |
| servicerequired | Service ID |
| linkrequired | Link to page |
| quantityrequired | Needed quantity |
| answer_numberrequired | Answer number of the poll |
Change the type and the sample beside it changes with it.
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=add" \ -d "service=1" \ -d "link=https://t.me/yourchannel" \ -d "quantity=1000" \ -d "runs=3" \ -d "interval=60"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'add', 'service' => '1', 'link' => 'https://t.me/yourchannel', 'quantity' => '1000', 'runs' => '3', 'interval' => '60', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "add", "service": "1", "link": "https://t.me/yourchannel", "quantity": "1000", "runs": "3", "interval": "60",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "add", service: "1", link: "https://t.me/yourchannel", quantity: "1000", runs: "3", interval: "60", }),});const result = await res.json();
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=add" \ -d "service=1" \ -d "link=https://t.me/yourchannel" \ -d "comments=first"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'add', 'service' => '1', 'link' => 'https://t.me/yourchannel', 'comments' => 'first', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "add", "service": "1", "link": "https://t.me/yourchannel", "comments": "first",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "add", service: "1", link: "https://t.me/yourchannel", comments: "first", }),});const result = await res.json();
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=add" \ -d "service=1" \ -d "username=yourchannel" \ -d "min=100" \ -d "max=500" \ -d "posts=0" \ -d "old_posts=0" \ -d "delay=30" \ -d "expiry=11/2026"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'add', 'service' => '1', 'username' => 'yourchannel', 'min' => '100', 'max' => '500', 'posts' => '0', 'old_posts' => '0', 'delay' => '30', 'expiry' => '11/2026', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "add", "service": "1", "username": "yourchannel", "min": "100", "max": "500", "posts": "0", "old_posts": "0", "delay": "30", "expiry": "11/2026",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "add", service: "1", username: "yourchannel", min: "100", max: "500", posts: "0", old_posts: "0", delay: "30", expiry: "11/2026", }),});const result = await res.json();
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=add" \ -d "service=1" \ -d "link=https://t.me/yourchannel" \ -d "quantity=1000" \ -d "answer_number=2"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'add', 'service' => '1', 'link' => 'https://t.me/yourchannel', 'quantity' => '1000', 'answer_number' => '2', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "add", "service": "1", "link": "https://t.me/yourchannel", "quantity": "1000", "answer_number": "2",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "add", service: "1", link: "https://t.me/yourchannel", quantity: "1000", answer_number: "2", }),});const result = await res.json();
{
"order": 23501
}action=status
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | status |
| orderrequired | Order ID |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=status" \ -d "order=23501"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'status', 'order' => '23501', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "status", "order": "23501",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "status", order: "23501", }),});const result = await res.json();
{
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}action=multi_status
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | status |
| ordersrequired | Order IDs (separated by a comma, up to 100 IDs) |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=status" \ -d "orders=23501,23502,23503"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'status', 'orders' => '23501,23502,23503', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "status", "orders": "23501,23502,23503",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "status", orders: "23501,23502,23503", }),});const result = await res.json();
{
"1": {
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
},
"10": {
"error": "Incorrect order ID"
},
"100": {
"charge": "1.44219",
"start_count": "234",
"status": "In progress",
"remains": "10",
"currency": "USD"
}
}action=refill
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | refill |
| orderrequired | Order ID |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=refill" \ -d "order=23501"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'refill', 'order' => '23501', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "refill", "order": "23501",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "refill", order: "23501", }),});const result = await res.json();
{
"refill": "1"
}action=multi_refill
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | refill |
| ordersrequired | Order IDs (separated by a comma, up to 100 IDs) |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=refill" \ -d "orders=23501,23502,23503"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'refill', 'orders' => '23501,23502,23503', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "refill", "orders": "23501,23502,23503",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "refill", orders: "23501,23502,23503", }),});const result = await res.json();
[
{
"order": 1,
"refill": 1
},
{
"order": 2,
"refill": 2
},
{
"order": 3,
"refill": {
"error": "Incorrect order ID"
}
}
]action=refill_status
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | refill_status |
| refillrequired | Refill ID |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=refill_status" \ -d "refill=1"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'refill_status', 'refill' => '1', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "refill_status", "refill": "1",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "refill_status", refill: "1", }),});const result = await res.json();
{
"status": "Completed"
}action=multi_refill_status
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | refill_status |
| refillsrequired | Refill IDs (separated by a comma, up to 100 IDs) |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=refill_status" \ -d "refills=1,2,3"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'refill_status', 'refills' => '1,2,3', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "refill_status", "refills": "1,2,3",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "refill_status", refills: "1,2,3", }),});const result = await res.json();
[
{
"refill": 1,
"status": "Completed"
},
{
"refill": 2,
"status": "Rejected"
},
{
"refill": 3,
"status": {
"error": "Refill not found"
}
}
]action=cancel
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | cancel |
| ordersrequired | Order IDs (separated by a comma, up to 100 IDs) |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=cancel" \ -d "orders=23501,23502,23503"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'cancel', 'orders' => '23501,23502,23503', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "cancel", "orders": "23501,23502,23503",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "cancel", orders: "23501,23502,23503", }),});const result = await res.json();
[
{
"order": 9,
"cancel": {
"error": "Incorrect order ID"
}
},
{
"order": 2,
"cancel": 1
}
]action=balance
| Parameter | Description |
|---|---|
| keyrequired | Your API key |
| actionrequired | balance |
curl -X POST https://smmtorch.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=balance"
$ch = curl_init('https://smmtorch.com/api/v2');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => http_build_query([ 'key' => 'YOUR_API_KEY', 'action' => 'balance', ]),]);$result = json_decode(curl_exec($ch), true);curl_close($ch);
import requestsr = requests.post("https://smmtorch.com/api/v2", data={ "key": "YOUR_API_KEY", "action": "balance",})result = r.json()
const res = await fetch("https://smmtorch.com/api/v2", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ key: "YOUR_API_KEY", action: "balance", }),});const result = await res.json();
{
"balance": "100.84292",
"currency": "USD"
}real HTTP status codes · the body is always { "error": "…" }
| Status | error | Cause |
|---|---|---|
| 200 | — | Success. The shape depends on the action. |
| 401 | Invalid API key | The key is missing, mistyped or revoked. |
| 404 | Incorrect request | Unknown action, or a required parameter is missing. |
Check the HTTP status first, then look for an error key
— a successful response never carries one.
{
"error": "Invalid API key"
}