Все запросы к API Salebot требуют аутентификации. Поддерживается два метода: API-ключ (рекомендуется для серверных приложений) и OAuth 2.0 (для пользовательских приложений). В этом руководстве мы подробно разберём оба метода, их использование и лучшие практики безопасности.
Практический пример из опыта:
Сервис аналитики подключился к API Salebot для автоматического сбора статистики по ботам своих клиентов. Они использовали API-ключи с ограниченными правами (только чтение статистики) и настроили ротацию ключей каждые 90 дней. Это позволило безопасно получать данные без риска компрометации, даже если один из ключей будет утечен. За 2 года работы не было ни одного инцидента безопасности.
Методы аутентификации
API-ключ (X-API-Key)
Статический ключ, который генерируется в личном кабинете. Передаётся в заголовке X-API-Key. Идеален для сервер-серверного взаимодействия.
Плюсы: Простота, не требует OAuth-потока.
Минусы: Ключ имеет полный доступ ко всем ресурсам аккаунта (если не ограничен правами).
OAuth 2.0
Стандартный протокол для авторизации пользовательских приложений. Пользователь даёт разрешение приложению на доступ к определённым ресурсам.
Плюсы: Безопаснее, можно ограничить права, токены имеют срок жизни.
Минусы: Сложнее в реализации, требует OAuth-потока.
JWT-токены
Для мобильных приложений и веб-интерфейсов Salebot использует JWT (JSON Web Tokens), которые получаются после аутентификации пользователя.
Плюсы: Стандарт, самоописываемые токены, можно проверять без обращения к серверу.
Минусы: Требуют реализации аутентификации пользователя.
Использование API-ключа
Это самый простой способ аутентификации. Вот как его получить и использовать:
Шаг 1: Генерация ключа
- Войдите в личный кабинет Salebot
- Перейдите: Настройки → API → Ключи доступа
- Нажмите "Создать новый ключ"
- Укажите название (например, "Сервис аналитики") и выберите права:
- Чтение — только получение данных
- Запись — создание и изменение данных
- Управление — удаление, настройка
- Нажмите "Создать"
- Скопируйте ключ (он покажется только один раз!)
Важно: Ключ выглядит как случайная строка из 64 символов, например: sb_live_abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
Шаг 2: Использование в запросах
Добавьте заголовок X-API-Key в каждый HTTP-запрос:
GET /v1/bots HTTP/1.1
Host: api.salebot.pro
X-API-Key: sb_live_abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
Content-Type: application/json
Пример с curl:
curl -X GET "https://api.salebot.pro/v1/bots" \
-H "X-API-Key: ваш_ключ_api" \
-H "Content-Type: application/json"
Шаг 3: Безопасное хранение
API-ключ — это пароль к вашему аккаунту. Никогда не храните его:
- В коде приложения (особенно в frontend-коде)
- В системах контроля версий (Git)
- В логах приложения
- В открытых репозиториях
Рекомендуется: Хранить ключ в переменных окружения, секретных менеджерах (HashiCorp Vault, AWS Secrets Manager) или в .env файле (который добавлен в .gitignore).
OAuth 2.0
OAuth 2.0 используется, когда вы создаёте приложение для других пользователей Salebot. Поток авторизации:
Шаг 1: Регистрация приложения
- В личном кабинете перейдите: Настройки → API → OAuth-приложения
- Нажмите "Создать приложение"
- Заполните данные:
- Название приложения
- Описание
- Redirect URI (куда будет перенаправлен пользователь после авторизации)
- Права (scopes), которые запрашивает приложение
- Получите
client_idиclient_secret
Шаг 2: Авторизация пользователя
Перенаправьте пользователя на страницу авторизации Salebot:
https://api.salebot.pro/oauth/authorize?
response_type=code&
client_id=ВАШ_CLIENT_ID&
redirect_uri=ВАШ_REDIRECT_URI&
scope=bot:read bot:write&
state=случайная_строка
Пользователь увидит экран с запросом разрешений. После согласия он будет перенаправлен на ваш redirect_uri с параметром code.
Шаг 3: Получение токена доступа
Обменяйте код на токен доступа:
POST /oauth/token HTTP/1.1
Host: api.salebot.pro
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=ПОЛУЧЕННЫЙ_КОД&
redirect_uri=ВАШ_REDIRECT_URI&
client_id=ВАШ_CLIENT_ID&
client_secret=ВАШ_CLIENT_SECRET
В ответ вы получите:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_in": 86400,
"refresh_token": "def50200abc...",
"scope": "bot:read bot:write"
}
Шаг 4: Использование токена
Используйте access_token в заголовке Authorization:
GET /v1/bots HTTP/1.1
Host: api.salebot.pro
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Права доступа (Scopes)
При создании API-ключа или OAuth-приложения вы можете ограничить права доступа:
Основные scopes
bot:read— чтение информации о ботах, диалогах, статистикеbot:write— создание и изменение ботов, отправка сообщенийclient:read— чтение информации о клиентахclient:write— создание и изменение клиентовanalytics:read— чтение аналитикиwebhook:manage— управление вебхуками*— все права (администратор)
Принцип минимальных привилегий: Давайте только те права, которые действительно нужны. Если приложению нужно только читать статистику, дайте только analytics:read.
Безопасность и лучшие практики
Ротация ключей
Регулярно меняйте API-ключи (рекомендуется каждые 90 дней). В Salebot можно создать новый ключ, обновить приложение, а старый удалить.
Автоматизация: Настройте скрипт, который создаёт новый ключ и обновляет его в вашей системе.
Мониторинг использования
В личном кабинете Salebot есть журнал API-запросов. Регулярно проверяйте, нет ли подозрительной активности.
Что искать: Запросы в нерабочее время, необычные endpoints, большое количество ошибок 403/429.
HTTPS всегда
Все запросы к API Salebot должны идти по HTTPS. HTTP не поддерживается. Убедитесь, что ваше приложение не "просаживает" HTTPS.
Проверка: Используйте инструменты типа SSL Labs для проверки настроек SSL.
Ошибки аутентификации
Вот наиболее частые ошибки и их причины:
Коды ошибок
- 401 Unauthorized — неверный или отсутствующий API-ключ/token
- 403 Forbidden — у ключа недостаточно прав для этого действия
- 429 Too Many Requests — превышен лимит запросов (rate limiting)
- 400 Bad Request — неверный формат запроса (например, отсутствует обязательный заголовок)
Пример ответа с ошибкой
{
"error": {
"code": "authentication_failed",
"message": "Invalid API key",
"details": "The provided API key is either expired or invalid"
}
}
Rate Limiting
API Salebot имеет ограничения на частоту запросов для защиты от злоупотреблений:
Лимиты по тарифам
- Бесплатный: 100 запросов в минуту
- Старт: 500 запросов в минуту
- Профессиональный: 2000 запросов в минуту
- Корпоративный: 10000 запросов в минуту
Лимиты считаются по аккаунту, а не по ключу. Все ключи одного аккаунта делят общий лимит.
Как обрабатывать rate limiting
При получении ошибки 429:
- Подождите перед повторным запросом (рекомендуется экспоненциальная backoff-стратегия)
- Проверьте заголовки ответа:
X-RateLimit-Limit— общий лимитX-RateLimit-Remaining— оставшиеся запросыX-RateLimit-Reset— время сброса лимита (Unix timestamp)
- Оптимизируйте приложение: кэшируйте ответы, объединяйте запросы, используйте вебхуки вместо polling
Что дальше?
После настройки аутентификации:
- Изучите методы для работы с ботами
- Изучите методы для работы с клиентами
- Настройте вебхуки для получения событий в реальном времени
- Прочитайте технические FAQ по работе с API