Документация · Интерфейс управления

Эндпоинты и форматы запросов

Полное описание API SnapApi: доступные методы, структура тела запросов, коды ответов и способы аутентификации. Всё, чтобы собрать интеграцию за один присест.

REST + JSON Версия API v2.4 Базовый URL: api.snapapi.io/v2
Экран с примером кода запроса к API SnapApi и ответом в формате JSON
200 OK среднее время ответа · 41 мс

Описание эндпоинтов

Базовый URL и структура ответа

Все запросы отправляются на базовый адрес и возвращают JSON. Ошибки описываются единым объектом с кодом и сообщением.

Базовый URL: https://api.snapapi.io/v2. Методы — стандартные HTTP: GET, POST, PATCH, DELETE. Заголовки обязательны: Content-Type: application/json и Authorization: Bearer <токен>. Лимиты: 600 запросов в минуту на проект, тело запроса до 1 МБ.

Каждый ответ содержит поле request_id — пригодится при обращении в поддержку. Успешные ответы возвращают статус 200–201, ошибки — 4xx или 5xx с объектом error (code, message, details).

Методы

Ключевые эндпоинты платформы

Набор, который покрывает 90% задач: проекты, развёртывания, логи и метрики.

GET /projects

Список проектов текущего аккаунта. Поддерживает пагинацию через ?limit= и ?cursor=. Возвращает id, name, status и created_at.

POST /deployments

Запускает развёртывание. Тело: {project_id, ref, env}. Возвращает объект деплоя с состоянием pending и ссылкой на превью.

GET /metrics

Метрики за период: запросы, задержка p95, расход CPU и памяти. Параметры: ?from=, ?to=, ?window=60s.

GET /logs

Стрим логов приложения. Фильтры по уровню и поиску по тексту: ?level=error&q=timeout. Поддерживает режим tail в реальном времени.

PATCH /projects/{id}

Обновление настроек проекта: название, домен, переменные окружения. Изменения применяются без простоя и не требуют пересборки.

DELETE /deployments/{id}

Останавливает и удаляет развёртывание. Тело не требуется. Возвращает 204 при успехе; активные сессии завершаются за 10 секунд.

Примеры кода

Запрос в трёх средах

Один и тот же вызов — запуск развёртывания — на cURL, Python и Node.js. Скопируйте и подставьте свой токен.

cURL

curl -X POST https://api.snapapi.io/v2/deployments
  -H "Authorization: Bearer sk_live_9f2a…"
  -H "Content-Type: application/json"
  -d '{"project_id":"prj_482","ref":"main","env":"prod"}'

Python

import requests
r = requests.post("https://api.snapapi.io/v2/deployments",
  headers={"Authorization": "Bearer sk_live_9f2a…"},
  json={"project_id": "prj_482", "ref": "main", "env": "prod"})
print(r.json()["id"])

Node.js

const res = await fetch("https://api.snapapi.io/v2/deployments", {
  method: "POST",
  headers: { "Authorization": "Bearer sk_live_9f2a…", "Content-Type": "application/json" },
  body: JSON.stringify({ project_id: "prj_482", ref: "main", env: "prod" })
});
console.log((await res.json()).id);

Генерация токенов

Ключи, которые под контролем

Токены создаются по ролям и с ограниченным сроком действия. Полный список доступных через GET /tokens.

sk_live_префикс продакшн-ключа
90 днеймаксимальный срок жизни токена
3роли: admin, deploy, read
POST /tokensэндпоинт генерации

Аутентификация и безопасность

Как мы защищаем каждый запрос

Шифрование в пути, строгие роли и мгновенная отзываемость ключей — без лишних настроек.

Все соединения идут по TLS 1.3, а токены передаются только в заголовке Authorization. Роли определяют доступ: admin управляет проектами и токенами, deploy запускает развёртывания, read — только чтение метрик и логов.

Каждый токен можно отозвать одним вызовом DELETE /tokens/{id} — он перестаёт работать мгновенно. Мы храним ключи в зашифрованном виде и никогда не показываем полный токен повторно после создания. При аномальной нагрузке включаются автоматические лимиты и оповещения.

Вопросы

По API и токенам

Не нашли ответ — напишите в поддержку, отвечаем в течение рабочего дня.

Токен создаётся в консоли на странице проекта или через POST /tokens. После генерации показывается один раз — сохраните его в переменных окружения, а не в коде.
По умолчанию 600 запросов в минуту на проект. При превышении возвращается 429 с заголовком Retry-After. Лимиты можно поднять в тарифе «Команда» или выше.
Да. При создании токена можно указать список разрешённых IP-адресов или подсетей. Запросы из других адресов отклоняются с кодом 403.
Каждый ответ содержит request_id, а в журнале событий фиксируется токен, роль и адрес источника. Это помогает быстро отследить происхождение и отозвать подозрительный ключ.

Готовы подключить свой сервис?

Создайте токен и отправьте первый запрос за пару минут — полная документация и примеры уже на этой странице.