Поиск

Документация на группу методов "uptime"

Группа методов

uptime: доступность сайта и блокировка бота

Группа uptime отдаёт историю доступности сайта проекта: процент успешных проверок кода ответа по часам или дням. Отдельным полем приходит признак того, что сайт заблокировал бота Пиксель Тулс — это отличает фильтрацию трафика от реального падения сайта. Метод синхронный, данные берутся из уже собранной истории и считаются на лету.

GET /projects/api/v1/uptime/get?token={токен}&project_id={id}&period={период} история доступности

Авторизация и формат ответа

Адрес метода строится как https://tools.pixelplus.ru/projects/api/v1/<группа>/<метод>. Токен доступа передаётся GET-параметром token в общем списке параметров, проект — параметром project_id. Токен создаётся в настройках аккаунта; доступ проверяется по тем же правилам, что и в интерфейсе: свои проекты и проекты, к которым вам выдан доступ.

Метод принимает GET и POST, но параметры в обоих случаях читаются из query-строки. Ответ всегда application/json с HTTP-кодом 200 — успех или ошибка различаются полями status и code внутри тела.
Параметр Тип Обяз. Описание
token string да Токен доступа к API из настроек аккаунта.
project_id int да ID проекта в системе. Виден в адресе страницы проекта и в методе projects/get.
period string нет Период выборки. По умолчанию day. Допустимые значения перечислены ниже.

1uptime/get — история доступности

GET /projects/api/v1/uptime/get — возвращает массив интервалов за выбранный период. В каждом интервале: процент успешных проверок и признак блокировки бота. Интервалы идут подряд без пропусков, включая те, по которым проверок не было.

Значения параметра period

Значение Глубина Шаг интервала Формат поля date
day последние 24 часа час 2026-09-15 14:00
week последние 7 дней сутки 2026-09-15
two_weeks последние 14 дней сутки 2026-09-15
month последние 30 дней сутки 2026-09-15
quarter последние 90 дней сутки 2026-09-15

Поля элемента result

Поле Тип Описание
date string Начало интервала. Час для day, дата для остальных периодов.
percent float|null Доля проверок с кодом ответа 200 за интервал, от 0 до 100. null — проверок за интервал не было.
bot_blocked bool|null Сайт заблокировал бота Пиксель Тулс хотя бы на одной проверке за интервал. null — проверок за интервал не было.

Ответ

{
  "status": "ok",
  "code": 1,
  "msg": "success",
  "result": [
    {
      "date": "2026-09-15 10:00",
      "percent": 100,
      "bot_blocked": false
    },
    {
      "date": "2026-09-15 11:00",
      "percent": 0,
      "bot_blocked": true
    },
    {
      "date": "2026-09-15 12:00",
      "percent": null,
      "bot_blocked": null
    }
  ]
}

2bot_blocked — блокировка бота

Сайт может отвечать по-разному браузеру и роботу: фильтр трафика или WAF пропускает посетителя и отдаёт ошибку боту. В такой ситуации percent равен нулю, хотя сайт открывается и работает. Поле bot_blocked отделяет этот случай от настоящего падения сайта.

Значение Что произошло Что показывать
true Сайт ответил боту кодом 403 или 429 хотя бы на одной проверке за интервал. Не «сайт лежал», а «сайт блокирует бота» со ссылкой на инструкцию.
false Блокировки не было. Сайт отвечал нормально либо был недоступен по другой причине. Обычный процент доступности.
null За интервал не было ни одной проверки. percent в этом случае тоже null. Прочерк, а не ноль.
Обычная недоступность сайта блокировкой не считается и даёт false: таймаут соединения, 500, 502, 503 и прочие ошибки сервера означают, что сайт не работает, а не что он фильтрует робота. Признак выставляется только по кодам 403 и 429.

Если bot_blocked равен true, владельцу сайта нужно добавить IP-адреса и User-Agent Пиксель Тулс в исключения фильтра. Актуальный список и инструкция: разблокировка ботов Пиксель Тулс. До этого момента аптайм по проекту будет нулевым, хотя сайт доступен для посетителей.

Коды ошибок

Ошибка приходит с HTTP-кодом 200, в теле — status: "error" и код в поле code.

Код Текст Причина
50 access error Токен не передан, не найден, или у его владельца нет доступа к этому проекту.
51 wrong project id project_id не передан или проекта с таким ID не существует.
52 wrong request data Недопустимое значение period. Список допустимых значений приходит в result.message.

Пример ответа при ошибке

{
  "status": "error",
  "code": 52,
  "msg": "wrong request data",
  "result": {
    "message": "Acceptable values of period: day, week, two_weeks, month, quarter"
  }
}

Примеры

cURL

curl "https://tools.pixelplus.ru/projects/api/v1/uptime/get?token={токен}&project_id=7002&period=week"

PHP

<?php

$url = 'https://tools.pixelplus.ru/projects/api/v1/uptime/get?' . http_build_query([
    'token'      => '{токен}',
    'project_id' => 7002,
    'period'     => 'week',
]);

$response = json_decode(file_get_contents($url), true);

if (($response['status'] ?? '') !== 'ok') {
    throw new RuntimeException($response['msg'] ?? 'unknown error');
}

foreach ($response['result'] as $row) {
    if ($row['bot_blocked'] === true) {
        echo "{$row['date']}: сайт блокирует бота\n";
    } elseif ($row['percent'] !== null) {
        echo "{$row['date']}: {$row['percent']}%\n";
    }
}

Python

import requests

r = requests.get(
    'https://tools.pixelplus.ru/projects/api/v1/uptime/get',
    params={'token': '{токен}', 'project_id': 7002, 'period': 'week'},
    timeout=30,
)
data = r.json()

if data['status'] != 'ok':
    raise RuntimeError(data['msg'])

for row in data['result']:
    if row['bot_blocked']:
        print(row['date'], '— сайт блокирует бота')
    elif row['percent'] is not None:
        print(row['date'], f"{row['percent']}%")

Ограничения и рекомендации

  • Проверки идут только по проектам, где включена техпроверка «Общие показатели» и заполнено главное зеркало. Если проверок нет вообще, метод вернёт интервалы с percent: null.
  • Каждый проект проверяется примерно раз в 21 минуту — около трёх проверок в час. Поэтому для period=day процент в часе считается по нескольким замерам и принимает значения вида 0, 33.33, 66.67 и 100.
  • История хранится 90 дней, более старые записи удаляются. Это же ограничение задаёт максимальную глубину периода quarter.
  • Поля date и percent не менялись при добавлении bot_blocked — интеграции, написанные до этого, продолжают работать без правок.
  • Вызовы метода лимиты не расходуют. Лимиты списывает сам сбор аптайма — фиксированно около 2 057 лимитов за 30 дней на проект.