Введение

APISafe предоставляет RESTful API для программного доступа к вашим секретам и управления ими. API использует JSON для обмена данными и стандартные HTTP коды ответов.

Базовый URL

https://api.apisafe.io/v1

Аутентификация

Все запросы к API должны содержать заголовок авторизации с вашим API токеном:

Authorization: Bearer YOUR_API_TOKEN

Получение API токена

  1. Войдите в панель управления APISafe
  2. Перейдите в раздел "Настройки" → "API токены"
  3. Нажмите "Создать новый токен"
  4. Задайте название и права доступа
  5. Скопируйте токен (он показывается только один раз)

Безопасность токенов

Храните API токены в безопасном месте. Не передавайте их в URL параметрах или логах. Регулярно ротируйте токены.

Лимиты запросов

План Запросов в минуту Запросов в день
Free 60 1,000
Starter 300 10,000
Professional 1,000 100,000
Enterprise Без ограничений Без ограничений

Коды ответов

Код Описание
200 Успешный запрос
201 Ресурс создан
400 Неверный запрос
401 Не авторизован
403 Доступ запрещен
404 Ресурс не найден
429 Превышен лимит запросов
500 Внутренняя ошибка сервера

Секреты

GET /secrets

Получить список всех секретов

Query параметры:

project_id string

Фильтр по ID проекта (опционально)

type string

Фильтр по типу секрета (опционально)

limit integer

Количество результатов (по умолчанию: 50, максимум: 100)

Пример запроса:

curl -X GET "https://api.apisafe.io/v1/secrets?project_id=proj_abc123&limit=10" \ -H "Authorization: Bearer YOUR_API_TOKEN"

Пример ответа:

{ "data": [ { "id": "secret_abc123", "name": "OpenAI Main Key", "type": "openai", "project_id": "proj_abc123", "description": "Основной ключ для OpenAI API", "tags": ["production", "ai"], "created_at": "2025-01-15T10:30:00Z", "updated_at": "2025-01-15T10:30:00Z", "last_used_at": "2025-01-18T14:22:00Z" } ], "pagination": { "total": 25, "page": 1, "per_page": 10, "pages": 3 } }
GET /secrets/{secret_id}

Получить конкретный секрет по ID

Path параметры:

secret_id string

Уникальный идентификатор секрета

Пример запроса:

curl -X GET "https://api.apisafe.io/v1/secrets/secret_abc123" \ -H "Authorization: Bearer YOUR_API_TOKEN"

Пример ответа:

{ "id": "secret_abc123", "name": "OpenAI Main Key", "type": "openai", "value": "sk-proj-...", "project_id": "proj_abc123", "description": "Основной ключ для OpenAI API", "tags": ["production", "ai"], "created_at": "2025-01-15T10:30:00Z", "updated_at": "2025-01-15T10:30:00Z", "last_used_at": "2025-01-18T14:22:00Z" }
POST /secrets

Создать новый секрет

Body параметры:

name string

Название секрета (обязательно)

value string

Значение секрета (обязательно)

type string

Тип секрета (опционально)

project_id string

ID проекта (опционально)

description string

Описание секрета (опционально)

tags array

Массив тегов (опционально)

Пример запроса:

curl -X POST "https://api.apisafe.io/v1/secrets" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Telegram Bot Token", "value": "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz", "type": "telegram", "project_id": "proj_abc123", "description": "Токен для основного бота", "tags": ["bot", "production"] }'
PUT /secrets/{secret_id}

Обновить существующий секрет

Пример запроса:

curl -X PUT "https://api.apisafe.io/v1/secrets/secret_abc123" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "OpenAI Updated Key", "description": "Обновленный ключ OpenAI", "tags": ["production", "ai", "updated"] }'
DELETE /secrets/{secret_id}

Удалить секрет

Пример запроса:

curl -X DELETE "https://api.apisafe.io/v1/secrets/secret_abc123" \ -H "Authorization: Bearer YOUR_API_TOKEN"

Проекты

GET /projects

Получить список всех проектов

Пример ответа:

{ "data": [ { "id": "proj_abc123", "name": "Основной проект", "description": "Проект для основных автоматизаций", "secrets_count": 15, "created_at": "2025-01-10T09:00:00Z", "updated_at": "2025-01-15T10:30:00Z" } ] }
POST /projects

Создать новый проект

Пример запроса:

curl -X POST "https://api.apisafe.io/v1/projects" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Новый проект", "description": "Описание нового проекта" }'

Статистика

GET /stats/usage

Получить статистику использования

Query параметры:

period string

Период: day, week, month (по умолчанию: week)

secret_id string

Статистика по конкретному секрету (опционально)

Пример ответа:

{ "period": "week", "total_requests": 1250, "unique_secrets": 8, "top_secrets": [ { "secret_id": "secret_abc123", "name": "OpenAI Main Key", "requests": 450 } ], "daily_breakdown": [ { "date": "2025-01-18", "requests": 180 } ] }

Webhook'и

APISafe поддерживает webhook'и для уведомления о различных событиях:

  • secret.created - создан новый секрет
  • secret.updated - обновлен секрет
  • secret.deleted - удален секрет
  • secret.accessed - получен доступ к секрету
  • project.created - создан новый проект
  • team.member_added - добавлен участник команды
POST /webhooks

Создать новый webhook

Пример запроса:

curl -X POST "https://api.apisafe.io/v1/webhooks" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-app.com/webhooks/apisafe", "events": ["secret.created", "secret.accessed"], "active": true }'

Формат webhook события

{ "id": "evt_abc123", "type": "secret.accessed", "created_at": "2025-01-18T14:22:00Z", "data": { "secret": { "id": "secret_abc123", "name": "OpenAI Main Key", "type": "openai" }, "user": { "id": "user_xyz789", "email": "user@example.com" }, "integration": "make.com" } }

SDK и библиотеки

Официальные SDK для популярных языков программирования:

JavaScript/Node.js

npm install @apisafe/sdk

Документация | GitHub

Python

pip install apisafe-python

Документация | GitHub

Go

go get github.com/apisafe/go-sdk

Документация | GitHub

PHP

composer require apisafe/php-sdk

Документация | GitHub

Ошибки

API возвращает ошибки в стандартном формате:

{ "error": { "code": "invalid_request", "message": "Параметр 'name' обязателен", "details": { "field": "name", "reason": "missing_required_field" } } }

Коды ошибок

  • invalid_request - Неверный запрос
  • authentication_failed - Ошибка аутентификации
  • permission_denied - Недостаточно прав
  • resource_not_found - Ресурс не найден
  • rate_limit_exceeded - Превышен лимит запросов
  • internal_error - Внутренняя ошибка сервера
Полная документация Получить помощь