StealthSurf VPNStealthSurf VPN
Доступные методы

Трафик

Статистика потребления трафика по аккаунту, конфигам, серверам и прокси.

Обзор

Модуль для получения статистики трафика по логическому скоупу: весь аккаунт, отдельный конфиг, платная опция, облачный сервер, конфиг или прокси облачного сервера.

Диапазон задаётся Unix-таймстампами в UTC, агрегация выполняется по интервалу group_by. ISO-недели начинаются с понедельника.


GET /traffic

Получить статистику трафика по выбранному скоупу.

Rate Limit: глобальный (60 req/min)

Query Parameters

ParameterTypeRequiredDescription
fromnumberДаНачало диапазона (включительно), Unix timestamp UTC. Целое от 0 до 4294967295, не раньше окна хранения в 180 дней
tonumberДаКонец диапазона (включительно), Unix timestamp UTC. Целое от 0 до 4294967295, не меньше from
group_bystringДаИнтервал агрегации в UTC: hour, day, week, month
scope_typestringНетЛогический скоуп: account, user_config, paid_option, paid_option_config, cloud_server, cloud_config, cloud_proxy. По умолчанию account
scope_idnumberНетИдентификатор скоупа (целое от 1 до 4294967295). Обязателен для всех скоупов, кроме account, и запрещён для account
include_seriesbooleanНетВключить в ответ плоские листовые ряды внутри скоупа. По умолчанию 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"
      }
    ]
  }
}

Ошибки

errorCodemessageКогда
3bad requestНекорректный диапазон (to < from, значения вне 0–4294967295), неизвестный group_by или scope_type, отсутствующий либо лишний scope_id, from за пределами окна хранения в 180 дней
1not foundСкоуп не найден среди субъектов трафика пользователя

Помогла ли вам эта статья?

Содержание