Доступные методы
Трафик
Статистика потребления трафика по аккаунту, конфигам, серверам и прокси.
Обзор
Модуль для получения статистики трафика по логическому скоупу: весь аккаунт, отдельный конфиг, платная опция, облачный сервер, конфиг или прокси облачного сервера.
Диапазон задаётся Unix-таймстампами в UTC, агрегация выполняется по интервалу group_by. ISO-недели начинаются с понедельника.
GET /traffic
Получить статистику трафика по выбранному скоупу.
Rate Limit: глобальный (60 req/min)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
from | number | Да | Начало диапазона (включительно), Unix timestamp UTC. Целое от 0 до 4294967295, не раньше окна хранения в 180 дней |
to | number | Да | Конец диапазона (включительно), Unix timestamp UTC. Целое от 0 до 4294967295, не меньше from |
group_by | string | Да | Интервал агрегации в UTC: hour, day, week, month |
scope_type | string | Нет | Логический скоуп: account, user_config, paid_option, paid_option_config, cloud_server, cloud_config, cloud_proxy. По умолчанию account |
scope_id | number | Нет | Идентификатор скоупа (целое от 1 до 4294967295). Обязателен для всех скоупов, кроме account, и запрещён для account |
include_series | boolean | Нет | Включить в ответ плоские листовые ряды внутри скоупа. По умолчанию false |
Пример запроса
curl -X GET "https://api.stealthsurf.net/traffic?from=1767225600&to=1769817600&group_by=day&scope_type=cloud_server&scope_id=12" \
-H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"Ответ
{
status: true,
statusCode: 200,
data: {
scope: {
type: string // Тип логического скоупа
id: number | null // null для скоупа account
title: string | null // Снимок названия скоупа
protocol: string | null // null для account и контейнерных скоупов
active: boolean // Есть ли живой физический участник
}
accounted_from: number | null // Первая базовая отсечка счётчиков
last_collected_at: number | null // Последний успешный сбор счётчиков
complete: boolean // Полное покрытие протоколами и свежесть счётчиков
total_bytes: string // Байты, десятичная строка
points: Array<{
start: number // Начало UTC-бакета, Unix timestamp
total_bytes: string // Трафик бакета в байтах
}>
children: Array<{
scope: object // Скоуп прямого потомка
total_bytes: string // Трафик потомка за диапазон
}>
series?: Array<{ // Только при include_series=true
scope: object // Дополнительно содержит parent_type и parent_id
accounted_from: number | null
last_collected_at: number | null
complete: boolean
total_bytes: string
points: Array<{ start: number; total_bytes: string }>
}>
}
}Все значения трафика возвращаются десятичными строками, а не числами — объём может выходить за пределы безопасного целого в JavaScript.
Пример ответа
{
"status": true,
"statusCode": 200,
"data": {
"scope": {
"type": "cloud_server",
"id": 12,
"title": "Private server",
"protocol": null,
"active": true
},
"accounted_from": 1767225600,
"last_collected_at": 1769817600,
"complete": true,
"total_bytes": "9876543210",
"points": [
{ "start": 1767225600, "total_bytes": "123456789" }
],
"children": [
{
"scope": {
"type": "cloud_config",
"id": 45,
"title": "Main config",
"protocol": "vless",
"active": true
},
"total_bytes": "123456789"
}
]
}
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 3 | bad request | Некорректный диапазон (to < from, значения вне 0–4294967295), неизвестный group_by или scope_type, отсутствующий либо лишний scope_id, from за пределами окна хранения в 180 дней |
| 1 | not found | Скоуп не найден среди субъектов трафика пользователя |
Помогла ли вам эта статья?