Support
O SERVIÇO DE IMPULSIONAMENTO ESTÁ FUNCIONANDO 24/7
Código promocional october2026 — 11% de desconto em espectadores até o fim de outubro
1
Status
Twitch [espectadores, raids, visualizações] — Funcionando
Twitch [shadowbaniContornamos estas restrições: sumiço das categorias e das recomendações, a live aparecendo como offline no Streamscharts e os plugins de detecção de bots que não acusam nada.] — contorno funcionando
Kick [espectadores com autorização] — Funcionando
Outros [visualizações, espectadores] — Funcionando
2
Suporte
Problemas com o pedido? Escreva no chat
Precisa de 10.000–100.000 espectadores? Telegram do administrador — @TiKey_K
3
Bônus
Registre-se e receba bônus
Torne-se um parceiro do serviço — link
Sistema de indicação — link
Viewer Configurator API

Viewer Configurator API

REST · JSONTwitchKickYouTubeVK Video Live

Viewers with your settings — straight from your code

Everything the Viewer Panel can do: join speed, geo, authorized viewers, floating online, raids, one subscription for several channels. Orders stay under your control: pause, stop, change channel, renew.

Endpointhttps://stream-promotion.ru/configurator/api/
AuthorizationAuthorization: YOUR_KEY
FormatJSON, UTF-8
Currencyfrom API settingsUSD by default

Which API do you need

Shop APIReady-made catalog services by ID: viewers for a period, followers, likes, VOD views. Perfect Panel format: POST with key and action parameters. Made for reselling in an SMM panel.Open the docs →
Configurator API this pageViewers with your own settings and full order control: pause, stop, channel change, renewal, one subscription for up to 100 channels. REST: JSON body, key in the Authorization header.
One key for both APIs. Set it in API settings. The configurator does not need a separate key.

Quick start

  1. Set a keyin your account, “API settings”: Latin letters and digits only.
  2. Check the keywith GET /user/info — it returns your balance.
  3. Get the pricewith POST /helper/calculator. Nothing is charged.
  4. Create an orderwith POST /order and store the uuid from the response.
curl https://stream-promotion.ru/configurator/api/user/info \
  -H "Authorization: YOUR_KEY"
<?php
$ch = curl_init('https://stream-promotion.ru/configurator/api/user/info');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: YOUR_KEY'],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res);
import requests

res = requests.get(
    "https://stream-promotion.ru/configurator/api/user/info",
    headers={"Authorization": "YOUR_KEY"},
    timeout=30,
)
print(res.status_code, res.json())
const res = await fetch(
  "https://stream-promotion.ru/configurator/api/user/info",
  { headers: { Authorization: "YOUR_KEY" } }
);
console.log(res.status, await res.json());

Response 200

{"balance": 176.0, "currency": "USD", "language": "en-gb"}

balance is what you can spend on orders: money on the account plus bonus points, in the currency from your API settings.

Request builder

Fill in the fields and a ready-to-run request appears below. Check the price first, then place the order. This page sends nothing anywhere.

curl -X POST https://stream-promotion.ru/configurator/api/helper/calculator \
  -H "Authorization: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"type":"twitch.viewers","total_time":"02:00:00","channels":[{"channel":"mychannel","viewers":{"maximum":50,"interval":1}}]}'
curl -X POST https://stream-promotion.ru/configurator/api/order \
  -H "Authorization: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"type":"twitch.viewers","total_time":"02:00:00","channels":[{"channel":"mychannel","viewers":{"maximum":50,"interval":1}}]}'

The list only offers durations the API accepts without rounding. Add authorized viewers, views, raids and geo using the settings table.

Authorization

Pass the key in the Authorization header as is: no Bearer, no account number, no colon.

Authorization: k7Hq2mXv9PaL
The key gives access to your balance
  • Keep the key on your server. Never put it into page code, a browser extension or a mobile app.
  • Once you change the key in settings, the old one stops working immediately.
  • No header — response 400. Wrong key or disabled account — 403.

All methods

Paths are relative to https://stream-promotion.ru/configurator/api. Only two methods charge money — they are marked.

MethodWhat it does
GET/user/infoBalance, currency, language
GET/helper/typePlatforms
GET/helper/geoViewer countries and regions
GET/helper/kick/qualityKick viewer quality
GET/helper/platformsView devices, Twitch
GET/helper/referrersView sources, Twitch
POST/helper/calculatorOrder price, no charge
POST/orderchargesCreate an order
POST/ordersList orders
GET/order/{uuid}Order details
PATCH/order/{uuid}Edit, pause, stop
PUT/order/{uuid}/renewchargesRenew an order

Balance: GET /user/info

See the response in “Quick start”. Handy for checking the key and the balance before an order.

Reference lists: GET /helper/…

The values rarely change — cache them on your side for a day.

PathReturns
/helper/typetwitch, kick, youtube, vk — the order type is built from them: twitch.viewers and so on.
/helper/geoA list of {id, label}, most popular first: Russia, SNG, SNG PRO, EuMix… 0 is Mix, mixed geo.
/helper/kick/quality0 MQ, 1 HQ (+66 % to price), 2 UHQ (+133 %)
/helper/platforms1 Web, 2 iOS, 3 Android, 4 Mobile Web, 5 Xbox, 6 PlayStation, 7 Curse
/helper/referrers1 Following, 2 notification on site, 3 recommendations, 4 home page recommendations, 5 direct, 6 search, 7 directory, 8 telegram.org, 9 discord.com, 10 google.com, 11 twitch.tv — with it, pass value: the channel name

Price: POST /helper/calculator

Same body as creating an order. Nothing is charged, no order is created. Response: total_amount — to pay, total_base — base price without discounts and markups.

curl -X POST https://stream-promotion.ru/configurator/api/helper/calculator \
  -H "Authorization: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"type":"twitch.viewers","total_time":"02:00:00",
       "channels":[{"channel":"mychannel","viewers":{"maximum":50,"interval":1}}]}'

Response 200

{"total_amount": "19.91", "total_base": "19.91", "currency": "RUB"}

Create an order: POST /order

Charges the price to your balance. Minimum order amount is 0.10 in the account currency.

FieldDescription
typerequiredtwitch.viewers, kick.viewers, youtube.viewers or vk.viewers
channelsrequiredArray of channels. Without a subscription only the first one counts.
channels[].channelrequiredChannel name or link. For YouTube, a channel or a live stream link works.
channels[].viewers.maximumrequiredNumber of viewers. YouTube — up to 200 per order.
channels[].viewers.intervalrequiredPause between viewers joining, seconds: 0.1–300
total_timerequiredDuration D.HH:MM:SS. Allowed values are below.
is_subscribeoptionaltrue — a subscription for several channels
couponoptionalPromo code. An invalid code is ignored and the order is priced without it.
max_total_amountoptionalPrice limit. If the order costs more, you get 409 and nothing is charged.

Example: Twitch with authorized viewers, views and raids

{
  "type": "twitch.viewers",
  "total_time": "1.00:00:00",
  "viewers": {"auth_percent": 30, "is_collect_points": true,
              "spread_percent": 20, "spread_delay": 300},
  "views": {"views_per_viewers": 5, "retention": 300, "geo": 7},
  "raid": {"count": 2, "time": 600, "viewers_percent": 50},
  "is_casino": false,
  "channels": [{"channel": "mychannel", "viewers": {"maximum": 100, "interval": 2}}],
  "max_total_amount": 30
}

Response 200

{"order_id": 7712345, "uuid": "3f8c1a2e-5b7d-4c1e-9a0b-2d4e6f8a1c3e"}

order_id is the order number on the website, uuid is the ID for all other methods.

Repeating the request creates a second order
  • If no response came back (connection drop, timeout, 500), do not retry blindly. First check the order list for the last few minutes.

Settings by platform

The viewers, views and raid blocks are set at the order level, next to type.

FieldTwitchKickYouTubeVK
viewers.auth_percentauthorized viewers, %1–100——1–100
viewers.is_collect_pointscollect channel pointsyes, with authorization———
viewers.spread_percentfloating viewers, %1–50———
viewers.spread_delayspread pause, sec — required with spread_percent120–900———
views.views_per_viewersviews per hour per viewer1–501–10——
views.retentionretention, sec60–900, required with views———
views.unique_viewers_percentunique viewers, %1–100———
views.geoid from /helper/geoyesyes——
views.platforms, views.referrers[{id, min, max}], % of viewsyes———
raid.countnumber of raids1–10000———
raid.timeraid duration, sec60–43200———
raid.viewers_percentshare of viewers in a raid, %1–100———
is_casinoindividual viewers+45 % to price———
quality0 MQ, 1 HQ, 2 UHQ—yes——

A field the platform does not support is ignored. Geo is set in the views block. Views are on when views_per_viewers is above zero, raids — when raid.count is above zero. All pauses and durations are in seconds.

Duration: total_time

Format D.HH:MM:SS. An order is counted in one unit — minutes, hours, days, weeks or months. A month is 28 days.

Minutes10–3000:15:00
Hours1–1202:00:00
Days1–53.00:00:00
Weeks1–214.00:00:00
Months1–228.00:00:00
The remainder is dropped without an error
  • The largest unit is taken and the rest is lost: 02:30:00 is 2 hours, 1.12:00:00 is 1 day, 10.00:00:00 is 1 week, 30.00:00:00 is 1 month.
  • Values out of range return an error: you cannot order 6 days, 13 hours or 5 minutes.
  • Check the price in the calculator before ordering: it shows which duration you actually get.

Subscription: is_subscribe

One order for several channels at once — up to 100. Each channel has its own maximum and interval. Duration — days, weeks or months only. +25 % to price. The channel list of a subscription can be changed without limits.

{"type": "kick.viewers", "quality": 1, "is_subscribe": true, "total_time": "7.00:00:00",
 "channels": [
   {"channel": "main_channel", "viewers": {"maximum": 80, "interval": 1}},
   {"channel": "second_channel", "viewers": {"maximum": 40, "interval": 1}}
 ]}

Order list: POST /orders

All fields are optional. Without a date filter you get orders for the last 3 months.

FieldDescription
filter.typetwitch, kick, youtube, vk
filter.statuson — running, off — finished, all — all
filter.order_idWebsite order numbers, an array of numbers: [7712345]
filter.is_freez, filter.is_stop, filter.is_subscribetrue / false
filter.date_from, filter.date_to2026-10-01. The window is 93 days at most.
limit1–50, 20 by default
orderdesc — newest first (default) or asc
last_idNext page cursor — take it from the previous response
{"filter": {"type": "twitch", "status": "on"}, "limit": 20}

Response 200

{
  "items": [{
    "uuid": "3f8c1a2e-…", "order_id": 7712345, "type": "twitch.viewers",
    "viewers": {"count": 100, "interval": 2}, "channels": ["mychannel"],
    "total_time": "1.00:00:00", "free_time": "0.17:42:10",
    "is_subscribe": false, "is_stop": false, "is_freez": false,
    "status": "on", "actions": ["edit", "stop", "pause", "renew"],
    "added_at": "2026-10-11T12:05:40+03:00"
  }],
  "last_id": "Mjk4OTA0", "has_next": true
}

Order details: GET /order/{uuid}

Same fields as in the list plus every setting of each channel: channels[].viewers, views, raid, priority. Time: total_time — purchased, free_time — left. Someone else's or unknown uuid — response 404.

Edit an order: PATCH /order/{uuid}

Send only what you change. Response: {"updated": true}.

{"is_freez": true}
{"is_stop": true}
{"channels": [{"channel": "new_channel"}]}
{"channels": [{"channel": "mychannel",
  "viewers": {"maximum": 60, "interval": 3, "spread_percent": 10, "spread_delay": 240}}]}
  • Resume after a pause — {"is_freez": false}, start after a stop — {"is_stop": false}.
  • maximum can be lowered and raised within what you bought (your plan) — without restarting the order.
  • One order can be changed at most once every 10 seconds, otherwise 429.
  • A finished order (status: off) cannot be changed — it can only be renewed.

Renew: PUT /order/{uuid}/renew

Renews for the same period with the same settings and charges the price. If this order cannot be renewed, a new one is created: the response has "is_new": true and a new uuid.

{"uuid": "9a0b2d4e-…", "order_id": 7712399, "is_new": true}

Statuses and limits

Runningstatus: onViewers are on the channel, time is running.
Pausedis_freez: trueViewers leave, order time is frozen. Limited.
Stoppedis_stop: trueViewers leave, order time keeps running.
Finishedstatus: offTime is over. Only renewal is available.

What you can do with an order right now is listed in the actions array: edit, pause/play, stop/start, renew.

Order durationPause, totalChannel changes
up to 1 dayunlimited1
1–3 daysup to 12 hours2
3–7 daysup to 24 hours2, a week — 3
over a weekup to 72 hours3, 2 months — 5

Channel changes are counted without a subscription and allowed once a day at most. In a subscription the channel list changes freely.

Errors

Unlike the shop API, the HTTP code matters here. Error body: {"code": "…", "message": "…"}. message holds a text in the language from your API settings or a code like error_order_type.

HTTPWhen
400No header, wrong field, value out of range, not enough money
403Wrong key or disabled account
404Order not found or not yours; with body [] — unknown address
405Wrong method: e.g. POST instead of GET
409Price is above max_total_amount, nothing charged
429The order was changed less than 10 seconds ago
500Failure on our side. Check the order list before retrying
503Maintenance, retry later (Retry-After header)
messageWhat to fix
error_actionUnknown path. Check the URL: /configurator/api/…
error_incorrect_requestThe body is not JSON. Send Content-Type: application/json
error_order_typetype is not in the list: twitch.viewers, kick.viewers…
“The channel does not match the service type”The link points to another platform
“Validity period must be greater / less than N”total_time out of range, see duration
“Insufficient funds on balance” (error_user_credit)Top up your balance
error_param_*_min / _maxField value out of range from the settings table
error_order_allowed_actionThe action is not in the order's actions
error_order_channels_change_*No channel changes left or a day has not passed yet
“Freezing timer limit reached”Pause time is used up
error_filter_*Wrong list filter: date, limit, order number

FAQ

Do I need a separate key for the configurator?

No. It is the same key as for the shop API, from “API settings”. The endpoint and the way to pass it differ: here it is the Authorization header, in the shop API — the key parameter.

The key is correct, but I get 403 “Invalid Authorization header”

Pass the key without Bearer, account number or spaces. Make sure the key is saved in settings and has not been changed since. A 400 response means the header never arrived: some proxies and hosting providers strip Authorization.

Is there a test mode?

There is no sandbox. /user/info, the reference lists and /helper/calculator are safe to try: they charge nothing. Only POST /order and PUT /renew charge money.

A reference list returned 404 with an empty list

The reference lists work. 404 with [] means the address was not recognised: check the full path, e.g. /configurator/api/helper/platforms, and the GET method. Still failing — send support the address, request body and server response.

Which currency are prices in, and which language are errors in?

Both come from “API settings”. If no currency is selected — USD.

Which platforms are supported? What about Trovo?

The configurator API covers Twitch, Kick, YouTube and VK Video Live. Viewers for other platforms, Trovo included, are catalog services ordered through the shop API.

Why did a 10-day order turn into one week?

Duration is counted in one unit and the remainder is dropped: 10 days is 1 week. Allowed: 1–5 days, 1–2 weeks, 1–2 months of 28 days. See the duration table.

What is interval?

The pause between viewers joining, in seconds. interval: 1 means 60 viewers a minute; with 100 viewers and interval: 2 everyone joins in about 3 minutes 20 seconds. The longer the pause, the more natural the online growth.

What do floating viewers and the spread pause do?

spread_percent is the share of viewers who leave and come back, so the online count is not a flat line. spread_delay is the pause between such swings, 120–900 seconds. Order creation used to take minutes (2–15) here — such values still work: anything below 60 is read as minutes. If you set spread_percent, pass spread_delay too.

What is retention and how many views to set?

views.retention — how many seconds a viewer watches before leaving and joining again. views.views_per_viewers — views per hour from one viewer. We advise no more than 5–10: higher growth looks unnatural.

Why authorized viewers?

Authorized viewers are logged into Twitch or VK accounts: they show up in the chat viewer list, and on Twitch they can collect channel points (is_collect_points). For now points only accumulate; spending them is planned. Unauthorized viewers count towards online but are not in the chat list.

What is is_casino?

“Individual viewers” for channels in casino and crypto categories, and for channels that drop out of categories and recommendations when boosted (shadow ban). Different servers and different geo. +45 % to price.

How do raids work?

raid.count — raids per order (set at purchase, up to 10,000), raid.time — how many seconds viewers stay on the other channel after the raid, raid.viewers_percent — the share of viewers that go on the raid. A raid starts by itself when the streamer runs the raid command in chat. Raids are paid: the first one raises the price noticeably, each next one costs less. A raid does not extend the order: when order time runs out, viewers leave, even mid-raid. Turn off subscriber-only chat during the stream: with it on, a raid may fail.

How much does geo cost?

Choosing a country does not change the price. The price depends on views, retention, authorization, floating viewers, raids, is_casino, Kick quality and subscription. The calculator shows the total.

What is the difference between MQ, HQ and UHQ on Kick?

The quality of viewer accounts. HQ costs 66 % more than MQ, UHQ — 133 % more.

Viewers did not arrive — what should I check?

Viewers join only a live stream. Make sure the stream is online, the order is not paused or stopped (is_freez, is_stop), free_time is above zero and the channel is correct. If all is fine, contact support and send the uuid.

Can I get viewers on a recording?

No, the configurator works with live streams. VOD and clip views are separate catalog services ordered through the shop API.

What is the difference between pause and stop?

On pause (is_freez) order time is frozen, but pause time is limited — see limits. On stop (is_stop) viewers leave and time keeps running. Need a break between streams, or bought in the morning for an evening stream — use pause (if actions contains pause).

How do I change the channel?

PATCH /order/{uuid} with a new channel. Without a subscription the number of changes is limited and allowed once a day at most; the remaining count is shown in the Viewer Panel. In a subscription channels change freely.

Can one order have several channels?

Without a subscription one channel works: only the first item of channels is used. In a subscription — up to 100 channels, each with its own maximum; viewers are split between the channels that are live right now.

Settings at order level or inside a channel?

For the quote and order creation the viewers, views and raid blocks are shared, at order level next to type. When editing (PATCH) they are set per channel — inside channels[], as in the example.

Can I lower or raise viewers in a running order?

Yes, within your plan and without a restart: change maximum via PATCH — down and back up to the purchased amount. More than you bought — only with a new order.

How do I renew without a gap?

Renew in advance: PUT /order/{uuid}/renew while free_time is above zero. A finished order cannot be renewed — a new one with the same settings is created: check is_new and store the new uuid. The API has no auto-renewal.

How do I find an order by its website number?

POST /orders with {"filter": {"order_id": [7712345]}}. The number is a number, not a string.

How often can I poll the status? Are there webhooks?

There are no webhooks — you poll for the state. No more than 3 requests per second; once a minute is enough for statuses. Poll the list via /orders rather than each order separately. One order can be changed at most once every 10 seconds.

What if the price changes between the quote and the order?

Prices are dynamic and can change. total_amount — what will be charged, total_base — base price without discounts and markups. To avoid overpaying pass max_total_amount: if the order turns out more expensive, you get 409 and nothing is charged. Minimum quantity and duration are visible in the Viewer Panel.

What if the balance is too low?

Response 400 with “Insufficient funds on balance” in message (error_user_credit). No order is created. Money and bonus points are counted together.

Do promo codes and bonus points work?

Promo code — in the coupon field. Bonus points are part of the balance and are spent together with money if the service accepts them.

Are API orders visible in the Viewer Panel?

Yes, it is the same list. Orders created in the Viewer Panel are available through the API as well.

No such question here yet. Message us — we will answer and add it to this page.

Need help with the integration?

Send the request, the response and the order uuid — we will sort it out faster. Never send your key in a message.

Message us on Telegram
Deposit funds, one-click order, discounts and bonuses are available only for registered users. Register.
If you didn't find the right service or found it cheaper, write to I will support you in tg or chat, and we will resolve any issue.

Painel de controle de espectadores [Twitch | Kick | YouTube | VK Video Live]

Crie seu próprio plano personalizado

 

Nossos Serviços para Streamers

 

Nossos Serviços para Criadores de Conteúdo