API и интеграции

Быстрый старт и ключи API

Адрес API

Публичный интерфейс: https://api.o-lesa.ru/v1. Для аккаунта на другом экземпляре используйте его API-хост, например https://api.o-lesa.com/v1. Баланс и доступ определяются сервером, на котором вы создали ключ.

/api/v1 — интерфейс веб-приложения. Новый код интеграций должен использовать /v1. Не заменяйте старые URL в работающем чате: его потоковый формат отличается.

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

  1. Откройте Настройки → API (/ru/settings#api).
  2. Укажите название: например, «CRM production».
  3. Выберите права: models для моделей, agents для агентов и вебхуков.
  4. Создайте ключ и сохраните его в секретах вашего сервера. Полное значение показывается один раз.

Ключ начинается с olesa_sk_. На сервере хранится только его SHA-256-хеш. Выдать ключ означает предоставить доступ к указанным операциям аккаунта, включая расходы с общего баланса. Право agents также позволяет создавать получателей вебхуков и управлять своими запусками и расписаниями.

Администратор управляет этими же ключами в карточке пользователя: может создать ключ для его аккаунта или отозвать существующий. Отдельного набора ключей для админки нет. Существующее полное значение нельзя восстановить из хеша; оно показывается только при создании.

Не передавайте ключ в URL, мобильный клиент или JavaScript браузера. Для каждой интеграции заведите отдельный ключ. При утечке отзовите его в настройках и выпустите новый. Отзыв останавливает новые запросы, но не отменяет уже принятые задачи. Получатели вебхуков отключаются отдельно.

Первый запрос

Предпочитаете Postman? Скачайте коллекцию запросов и откройте инструкцию по импорту. Ключи в файл не включены.

Задайте переменную OLESA_API_KEY через менеджер секретов вашей среды. Не вставляйте настоящий ключ в код или историю shell.

curl https://api.o-lesa.ru/v1/models \
  -H "Authorization: Bearer $OLESA_API_KEY"

Выберите id модели из ответа. Пример текстового запроса:

curl https://api.o-lesa.ru/v1/chat/completions \
  -H "Authorization: Bearer $OLESA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.5","messages":[{"role":"user","content":"Предложи три заголовка для сайта"}],"max_tokens":256}'

Это платный запрос к выбранной модели. Перед отправкой проверьте баланс и цены.

Python SDK

Поддерживается текстовый поднабор Chat Completions в OpenAI SDK, а не все API OpenAI:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OLESA_API_KEY"],
    base_url="https://api.o-lesa.ru/v1",
    max_retries=0,
)
reply = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Составь короткий план запуска"}],
    max_tokens=256,
)
print(reply.choices[0].message.content)

Повтор POST может создать ещё один платный запрос: ключ идемпотентности пока не поддерживается. Не повторяйте запрос автоматически после неоднозначного сетевого сбоя.