coreless / developersOpenAPI 3.1 ↗
API REFERENCE · v1

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

Методы для работы с сессиями, сообщениями и изображениями.

Быстрый стартМетодыИзображенияПотоковые ответыРежим разработчикаОшибки и лимитыИнструкция для агентов ↗

Быстрый старт

Bearer token

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

export BASE_URL="https://chat.coreless.site"
export API_KEY="cl_ваш_ключ"

# 1. Создайте сессию
curl "$BASE_URL/v1/sessions" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Первый диалог"}'

# 2. Используйте id из ответа
curl "$BASE_URL/v1/sessions/SESSION_ID/messages" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Привет!","stream":false}'

Продолжайте отправлять сообщения в ту же сессию. История автоматически включается в контекст. В случае ошибки пара сообщений не сохраняется; можно повторить запрос. При повторе после потери сети сначала проверьте историю, чтобы избежать дублирования.

{
  "id": "uuid сообщения",
  "session_id": "uuid сессии",
  "role": "assistant",
  "text": "Здравствуйте! Чем могу помочь?",
  "usage": { "inputTokens": 100, "outputTokens": 15 },
  "request_id": "uuid запроса"
}
МетодEndpointНазначение
GET/v1/modelsМодель приложения
POST/v1/sessionsСоздать сессию: {"title":"…"}
GET/v1/sessions?limit=50Последние сессии приложения
GET/v1/sessions/{id}Информация о сессии
DELETE/v1/sessions/{id}Удалить сессию и историю
GET/v1/sessions/{id}/messages?limit=50Последние сообщения, от старых к новым
POST/v1/sessions/{id}/messagesТекст, изображения, stream
POST/v1/imagesЗагрузить: {"data_url":"data:image/…"}
GET/v1/images/{id}Получить байты изображения
DELETE/v1/images/{id}Удалить загрузку

Каждый метод требует Authorization: Bearer <API_KEY>. Сессии, сообщения и изображения других приложений возвращают 404. Списки поддерживают limit от 1 до 100, по умолчанию 50. Модель задаёт администратор. Изменение инструкций через API доступно ключам с режимом разработчика.

Изображения вместе с сообщением

В images передавайте data URL с Base64 или ID, полученный через POST /v1/images. Поддерживаются PNG, JPEG, WebP и GIF. Внешние URL и пути к файлам не принимаются.

{
  "text": "Опиши изображение",
  "images": ["data:image/png;base64,iVBORw0KGgo..."],
  "stream": false
}

Количество и размер ограничиваются настройками приложения; максимум 10 изображений во всём контексте диалога. Загруженные изображения хранятся в изолированном пространстве приложения (до 256 МБ). После отправки в сообщении сохраняется собственная копия: удаление загрузки не удаляет вложение из истории. Чтобы удалить его полностью, удалите сессию.

Потоковые ответы · SSE

Установите "stream": true. Ответ будет иметь тип text/event-stream. Используйте fetch с чтением потока на backend: стандартный EventSource не поддерживает POST и Bearer-заголовок.

event: start
data: {"request_id":"…","session_id":"…"}

event: delta
data: {"text":"Привет"}

event: done
data: {"id":"…","text":"Привет!","session_id":"…","role":"assistant","usage":{},"request_id":"…"}

События delta содержат фрагменты, done — полный результат. При неудаче приходит event: error с полями code, message, request_id. Ответ HTTP 200 означает лишь открытие потока: успех подтверждает только done. Отключение клиента отменяет генерацию; неполный ответ не сохраняется.

Режим разработчика

При выпуске ключа администратор может включить режим разработчика. Такой ключ может читать и изменять системный промпт и правила поведения своего приложения. Обычные ключи получают 403 developer_mode_required.

GET /v1/application/instructions
Authorization: Bearer cl_…

PATCH /v1/application/instructions
Authorization: Bearer cl_…
Content-Type: application/json

{
  "system_prompt": "Ты помощник по подбору фильмов.",
  "behavior_rules": "Отвечай на русском языке."
}

PATCH принимает одно или оба поля. Пропущенное поле сохраняет значение, пустая строка очищает его. Лимит: 30 000 символов для system_prompt и 10 000 для behavior_rules. В ответе возвращаются оба актуальных значения.

Изменения сохраняются для всего приложения и применяются к следующим генерациям, включая продолжение существующих чатов. Модель, квоты и разрешения ключа менять нельзя. При перевыпуске режим сохраняется; ранее созданные ключи остаются обычными.

Ошибки, квоты и хранение

{"error":{"code":"daily_limit","message":"Daily request limit reached (UTC)","request_id":"…"}}

401 — отсутствующий или отозванный ключ. 403 — приложение отключено или у ключа нет режима разработчика. 404 — ресурс не существует или принадлежит другому приложению. 409 — сессия занята генерацией. 413 — слишком большой запрос или изображение. 422 — неверные поля либо превышение размера контекста. 429 — частотная, суточная или параллельная квота. 502 — генерация не завершилась. 503 — аккаунт Codex не подключён.

Для 429 ориентируйтесь на код ошибки и заголовок Retry-After. Суточная квота сбрасывается в 00:00 UTC. Каждый запущенный запрос, включая завершившийся ошибкой, учитывается в квотах. Одновременно в одной сессии допускается один запрос, на всём сервере — до восьми генераций. Повторяйте временные ошибки с увеличивающейся задержкой.

История входит в лимит входных символов. При превышении максимальной длины ответа генерация отменяется с кодом output_limit, частичный ответ не сохраняется. Тайм-аут генерации — 180 секунд. У приложений общий лимит подключённой подписки; серверные квоты не резервируют и не расширяют лимиты OpenAI.

Срок хранения — от 1 до 365 дней, задаётся администратором. Раз в час удаляются неактивные сессии, старые загрузки и журналы. Удаление сессии удаляет все её сообщения. Правила поведения передаются модели как инструкции и не гарантируют абсолютного соблюдения. Инструменты, команды, файловый доступ, веб-поиск и внешние коннекторы отключены.