Авторизация
Ключ передаётся в теле запроса полем key. У нас хранится только его SHA-256-хеш, поэтому восстановить ключ из базы нельзя — если он потерян, выпустите новый. Отключить ключ можно в кабинете в любой момент, он перестаёт работать сразу.
Один HTTP-адрес закрывает весь цикл: получить каталог, создать заказ, узнать статус, запросить добор или отмену. Протокол совпадает с форматом, который использует большинство SMM-панелей, поэтому готовой интеграции обычно достаточно поменять адрес и ключ.
Адрес
POST https://webkit.guru/api/v2
Только POST. Тело можно отправлять как application/x-www-form-urlencoded или как application/json — принимаются оба формата, ответ всегда JSON.
Ключ передаётся в теле запроса полем key. У нас хранится только его SHA-256-хеш, поэтому восстановить ключ из базы нельзя — если он потерян, выпустите новый. Отключить ключ можно в кабинете в любой момент, он перестаёт работать сразу.
60 запросов в минуту с одного IP-адреса. При превышении приходит код 429 и заголовок Retry-After с числом секунд до следующей попытки. Статусы лучше запрашивать пачками через orders, а не по одному заказу за вызов.
action=servicesПолный каталог с ценами, лимитами и признаками гарантии. Цены уже с вашей наценкой — это те суммы, которые спишутся с баланса.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «services» |
Ответ
[
{
"service": 21251,
"name": "Telegram — просмотры",
"type": "Default",
"category": "Telegram",
"rate": 0.41,
"min": 10,
"max": 50000000,
"refill": true,
"cancel": true
}
]action=addСписывает сумму с баланса и ставит заказ в очередь. Если провайдер отклонит заказ, деньги вернутся автоматически.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «add» |
| service | int | да | Идентификатор услуги из метода services |
| link | string | да | Ссылка на профиль или публикацию. Формат проверяется под конкретную площадку и метрику |
| quantity | int | да | Количество в пределах min и max услуги |
| runs | int | нет | Дробная подача: сколько раз повторить |
| interval | int | нет | Дробная подача: интервал между повторами в минутах |
Ответ
{ "order": 84213 }action=statusОдин заказ через order, до ста заказов за раз через orders.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «status» |
| order | int | нет | Номер заказа |
| orders | int[] | нет | Номера через запятую, максимум 100 |
Ответ
{
"charge": "410.00",
"start_count": "15420",
"status": "in_progress",
"remains": "3180",
"currency": "RUB"
}Ответ для пакета
{
"84213": { "charge": "410.00", "status": "completed", "remains": "0", "start_count": "15420", "currency": "RUB" },
"84214": { "charge": "120.00", "status": "in_progress", "remains": "890", "start_count": "2310", "currency": "RUB" },
"84215": { "error": "Incorrect order ID" }
}action=refillДоступен для услуг с признаком refill. Возвращает номер заявки — по нему проверяется статус.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «refill» |
| order | int | нет | Номер заказа |
| orders | int[] | нет | Номера через запятую, максимум 100 |
Ответ
{ "refill": 1932 }Ответ для пакета
[
{ "order": 84213, "refill": 1932 },
{ "order": 84214, "error": "Order is not sent to provider yet" }
]action=refill_statusИдентификатор здесь наш, а не провайдерский: через какого поставщика идёт заказ, знать не нужно.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «refill_status» |
| refill | int | нет | Номер заявки на добор |
| refills | int[] | нет | Номера через запятую, максимум 100 |
Ответ
{ "status": "Completed" }Ответ для пакета
[
{ "refill": 1932, "status": "Completed" },
{ "refill": 1933, "status": "Pending" }
]action=cancelПровайдер вправе отклонить отмену, поэтому заказ переходит в статус cancel_requested. Реальную отмену и возврат средств подтверждает синхронизация статусов.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «cancel» |
| order | int | нет | Номер заказа |
| orders | int[] | нет | Номера через запятую, максимум 100 |
Ответ
{ "cancel": 1 }Ответ для пакета
[
{ "order": 84213, "cancel": 1 },
{ "order": 84214, "error": "Incorrect order ID" }
]action=balanceТекущий баланс аккаунта в рублях.
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| key | string | да | Ключ API из кабинета, вкладка «API» |
| action | string | да | Строка «balance» |
Ответ
{ "balance": "12480.50", "currency": "RUB" }cURL
curl -X POST https://webkit.guru/api/v2 \
-d key=ВАШ_КЛЮЧ \
-d action=add \
-d service=21251 \
-d link=https://t.me/example/42 \
-d quantity=1000PHP
<?php
$response = file_get_contents('https://webkit.guru/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'ВАШ_КЛЮЧ',
'action' => 'add',
'service' => 21251,
'link' => 'https://t.me/example/42',
'quantity' => 1000,
]),
],
]));
$order = json_decode($response, true);Python
import requests
response = requests.post("https://webkit.guru/api/v2", data={
"key": "ВАШ_КЛЮЧ",
"action": "add",
"service": 21251,
"link": "https://t.me/example/42",
"quantity": 1000,
})
order = response.json()JavaScript
const response = await fetch("https://webkit.guru/api/v2", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
key: "ВАШ_КЛЮЧ",
action: "add",
service: 21251,
link: "https://t.me/example/42",
quantity: 1000,
}),
});
const order = await response.json();Поле status метода status возвращает одно из этих значений.
Ошибки бизнес-логики приходят с кодом 200 и полем error. HTTP-кодами отвечают только авторизация и ограничение частоты.
Зарегистрируйтесь, пополните баланс и выпустите ключ на вкладке «API». Отдельного согласования не нужно.
Создать аккаунт