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

Все запросы к Uvio Notify API аутентифицируются с помощью API-ключа, который передаётся в заголовке X-API-Key.

Как это работает

Uvio Notify API использует схему аутентификации по API-ключу. Каждый ключ привязан к конкретной компании — сервер автоматически определяет вашу компанию по ключу, поэтому дополнительно передавать Company ID не нужно.

Добавьте заголовок X-API-Key к каждому HTTP-запросу:

HTTP
curl -X GET https://api.uvio.chat/notify/v1/health \
  -H "X-API-Key: sk_live_your_secret_key"

Запросы без заголовка X-API-Key или с недействительным ключом получат ответ 401 Unauthorized.

Получение API-ключа

API-ключи создаются в Личном Кабинете компании. Для этого у вас должна быть одобренная регистрация компании. Если вы ещё не зарегистрировались, начните с раздела Начало работы.

1

Войдите в Личный Кабинет

Перейдите на lk.uvio.chat и авторизуйтесь через OTP.

2

Откройте раздел API-ключей

Перейдите в НастройкиAPI-ключи.

3

Создайте новый ключ

Нажмите Создать новый API-ключ. Ключ будет показан только один раз — скопируйте его сразу.

Важно

API-ключ отображается только один раз в момент создания. Если вы его потеряли — отзовите старый ключ и создайте новый.

Использование ключа

Передайте ключ в заголовке X-API-Key. Ниже приведены примеры на разных языках.

cURL

Bash
curl -X POST https://api.uvio.chat/notify/v1/otps \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $UVIO_API_KEY" \
  -d '{"identifier": "user@example.com", "identifier_type": "email"}'

Python

Python
import os
import requests

API_KEY = os.getenv("UVIO_API_KEY")
BASE_URL = "https://api.uvio.chat/notify/v1"

response = requests.post(
    f"{BASE_URL}/otps",
    headers={
        "Content-Type": "application/json",
        "X-API-Key": API_KEY,
    },
    json={
        "identifier": "user@example.com",
        "identifier_type": "email",
    },
)

print(response.json())

JavaScript / Node.js

JavaScript
const API_KEY = process.env.UVIO_API_KEY;
const BASE_URL = "https://api.uvio.chat/notify/v1";

const response = await fetch(`${BASE_URL}/otps`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-API-Key": API_KEY,
  },
  body: JSON.stringify({
    identifier: "user@example.com",
    identifier_type: "email",
  }),
});

const data = await response.json();
console.log(data);

Ошибки аутентификации

При проблемах с аутентификацией API возвращает один из следующих HTTP-статусов:

Статус Причина Что делать
401 Отсутствует или недействителен API-ключ Проверьте заголовок X-API-Key. Убедитесь, что ключ скопирован полностью и не отозван.
403 Компания неактивна или нет доступа к API Убедитесь, что регистрация компании одобрена и API-доступ включён в Личном Кабинете.
429 Превышен лимит запросов Подождите и повторите запрос. Соблюдайте ограничения частоты запросов для вашего тарифа.

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

401 Unauthorized
{
  "error": "Unauthorized",
  "details": "Invalid API key"
}

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

API-ключ предоставляет полный доступ к операциям вашей компании. Обращайтесь с ним как с паролем.

Рекомендуется

  • • Храните ключи в переменных окружения
  • • Используйте отдельные ключи для dev/staging/prod
  • • Ротируйте ключи каждые 90 дней
  • • Используйте HTTPS для всех запросов
  • • Отзывайте скомпрометированные ключи немедленно

Не допускайте

  • • Хранение ключей в коде или репозитории
  • • Передачу ключей через URL-параметры
  • • Использование ключей в клиентском коде (JS в браузере)
  • • Отправку ключей в логи или трекеры ошибок
  • • Использование одного ключа для нескольких сервисов

Управление ключами

В Личном Кабинете вы можете создавать и отзывать ключи. Рекомендуем держать не более двух активных ключей одновременно — один основной и один резервный для ротации.

Ротация ключей

Процедура безопасной замены ключа без простоя:

1

Создайте новый ключ

Сгенерируйте новый ключ в Личном Кабинете. Старый ключ продолжает работать.

2

Обновите конфигурацию

Замените старый ключ на новый в переменных окружения вашего сервиса и выполните деплой.

3

Отзовите старый ключ

После успешного деплоя отзовите старый ключ в Личном Кабинете.

Базовый URL и заголовки

Все запросы к Notify API отправляются на единый базовый адрес с обязательными заголовками.

Параметр Значение
Base URL https://api.uvio.chat/notify/v1
X-API-Key Ваш API-ключ (обязательный)
Content-Type application/json для JSON-запросов, multipart/form-data для загрузки файлов
Часовые пояса

Все временные метки в запросах и ответах используют UTC в формате ISO 8601 с суффиксом Z, например: 2024-01-01T12:00:00Z.

Что дальше

Теперь, когда вы знаете как аутентифицировать запросы, изучите конкретные API: