Документация на группу методов "uptime"
uptime: доступность сайта и блокировка бота
Группа uptime отдаёт историю доступности сайта проекта: процент успешных проверок кода ответа по часам или дням. Отдельным полем приходит признак того, что сайт заблокировал бота Пиксель Тулс — это отличает фильтрацию трафика от реального падения сайта. Метод синхронный, данные берутся из уже собранной истории и считаются на лету.
Авторизация и формат ответа
Адрес метода строится как 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 дней на проект.