API
API documentation
One POST request for everything: orders, status, service list, balance. Compatible with Perfect Panel and SmartPanel.
https://stream-promotion.ru/api/v2POSTJSONUSDdefault, can be changed in settings- The request was sent with GET. Only POST is accepted.
- Parameters were passed in the URL. They must go in the request body, not the query string.
- No User-Agent set. When testing with Postman or curl, set it explicitly.
You are responsible for what you send through the API. Read the method descriptions before connecting.
How to get a key
- Sign in to your account.
- Open the «API settings» section.
- Copy the key and the endpoint, add them to your panel.
The service list comes in the language selected in the API settings. The price currency can be chosen there too — USD by default.
Quick start
Check the connection with a balance request — it is the simplest one and creates nothing.
curl -X POST https://stream-promotion.ru/api/v2 \ -H "User-Agent: MyPanel/1.0" \ -d "key=YOUR_KEY" \ -d "action=balance"
<?php
$ch = curl_init('https://stream-promotion.ru/api/v2');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'MyPanel/1.0');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'key' => 'YOUR_KEY',
'action' => 'balance',
]));
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res); import requests
res = requests.post(
"https://stream-promotion.ru/api/v2",
data={"key": "YOUR_KEY", "action": "balance"},
headers={"User-Agent": "MyPanel/1.0"},
timeout=30,
)
print(res.json()) const res = await fetch("https://stream-promotion.ru/api/v2", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "MyPanel/1.0",
},
body: new URLSearchParams({
key: "YOUR_KEY",
action: "balance",
}),
});
console.log(await res.json()); Response
{
"status": "success",
"balance": "0.03",
"currency": "USD"
} Methods
The method is chosen with the action parameter. The key is always required.
Place an order
The main method. runs and interval split delivery into parts: for example, 7 runs with a 1440-minute interval stretch the order over a week.
The parameter set depends on the service type — pick one from the list and the table will update.
| Parameter | Description |
|---|---|
keyrequired | Your key from the API settings |
actionrequired | add |
servicerequired | Service ID from the list |
linkrequired | Link to a channel, stream or page |
quantityrequired | Quantity |
runsoptional | Number of runs |
intervaloptional | Pause between runs, in minutes. Whole number: 10, 20, 30, 60 |
Response
{
"status": "success",
"order": 32
}Order with comments
A separate order type: instead of a quantity you pass a list of comments. Suited for mentions and custom comments.
| Parameter | Description |
|---|---|
keyrequired | Your key from the API settings |
actionrequired | add |
servicerequired | Package ID |
linkrequired | Link to a channel, stream or page |
commentsrequired | Comments, one per line |
Response
{
"status": "success",
"order": 32
}Order status
| Parameter | Description |
|---|---|
keyrequired | Your key from the API settings |
actionrequired | status |
orderrequired | Order ID |
Response
{
"order": "32",
"status": "pending",
"charge": "0.27819",
"start_count": "0",
"remains": "0",
"currency": "USD"
}Status of multiple orders
Up to a hundred orders in one request — instead of a hundred separate calls.
| Parameter | Description |
|---|---|
keyrequired | Your key from the API settings |
actionrequired | status |
ordersrequired | IDs separated by commas: 12,13,14 |
Response
{
"12": {
"order": "12",
"status": "completed",
"charge": "0.27819",
"currency": "USD"
},
"13": {
"error": "Incorrect order ID"
}
}Service list
Returns every available service with prices. Names come in the language from your API settings; prices are always in dollars.
| Parameter | Description |
|---|---|
keyrequired | Your key from the API settings |
actionrequired | services |
Response
[
{
"service": "5",
"name": "Instagram Followers",
"rate": "0.9",
"min": "50",
"max": "10000",
"type": "Default",
"category": "Instagram"
}
]Balance
The simplest method — handy for checking that the key works.
| Parameter | Description |
|---|---|
keyrequired | Your key from the API settings |
actionrequired | balance |
Response
{
"status": "success",
"balance": "0.03",
"currency": "USD"
}Errors
On failure the response contains an error field with a description. The HTTP code stays 200 — check the response body, not the connection status.
{
"error": "Incorrect request"
} We will build a turnkey panel on our services. Balance and prices are returned in dollars, compatible with Perfect Panel and SmartPanel.
Message on Telegram
Our Services for Streamers
Our Services for Content Creators











