Skip to content

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

Инструкция по использованию API прокси Cognify Router для выполнения запросов к моделям OpenRouter.

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

Все запросы к API выполняются с помощью ключа, который вы создаёте в личном кабинете на вкладке «API-ключи». Ключ имеет формат sk-cr-… и передаётся в заголовке Authorization как Bearer-токен.

Header
Authorization: Bearer sk-cr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chat Completions

Эндпоинт совместим с OpenAI / OpenRouter Chat Completions. Отправьте массив сообщений и получите ответ модели.

POST/api/v1/chat/completions
curl -X POST https://router.cognify-labs.ru/api/v1/chat/completions \
  -H "Authorization: Bearer sk-cr-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "system", "content": "Ты полезный ассистент."},
      {"role": "user", "content": "Объясни квантовую запутанность простыми словами"}
    ],
    "temperature": 0.7
  }'

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

JSON
{
  "id": "chatcmpl-abc123",
  "model": "openai/gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Квантовая запутанность — это явление..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 150,
    "total_tokens": 175
  }
}

Стриминг

Для потоковых ответов передайте "stream": true. Ответ приходит как SSE-поток (Server-Sent Events), завершающийся data: [DONE].

POST/api/v1/chat/completions
curl -N -X POST https://router.cognify-labs.ru/api/v1/chat/completions \
  -H "Authorization: Bearer sk-cr-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [{"role": "user", "content": "Напиши сказку про кота"}],
    "stream": true
  }'

Формат SSE-потока

SSE
data: {"choices":[{"delta":{"content":"Ж"}, "index":0}]}

data: {"choices":[{"delta":{"content":"ил"}, "index":0}]}

data: {"choices":[{"delta":{"content":"-был"}, "index":0}]}

data: {"choices":[{"delta":{}, "index":0}], "finish_reason":"stop"}

data: [DONE]

Генерация изображений

Генерация изображений через POST /api/v1/images. Поддерживается стриминг частичных результатов.

POST/api/v1/images
curl -X POST https://router.cognify-labs.ru/api/v1/images \
  -H "Authorization: Bearer sk-cr-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-2.5-flash-image",
    "prompt": "Космический кот в стиле киберпанк",
    "stream": true
  }'

Генерация видео

Генерация видео — асинхронный процесс. Создайте задачку, опрашивайте статус и скачайте результат.

1. Создание задачи

POST/api/v1/videos
cURL
curl -X POST https://router.cognify-labs.ru/api/v1/videos \
  -H "Authorization: Bearer sk-cr-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/veo-3",
    "prompt": "Закат над океаном, slow motion"
  }'

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

JSON
{
  "id": "vid_abc123",
  "status": "processing",
  "polling_url": "/api/v1/videos/vid_abc123"
}

2. Проверка статуса

GET/api/v1/videos/{job_id}
cURL
curl https://router.cognify-labs.ru/api/v1/videos/vid_abc123 \
  -H "Authorization: Bearer sk-cr-..."

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

JSON
{
  "id": "vid_abc123",
  "status": "completed",
  "unsigned_urls": ["/api/v1/videos/vid_abc123/content?index=0"]
}

3. Скачивание видео

GET/api/v1/videos/{job_id}/content
cURL
curl https://router.cognify-labs.ru/api/v1/videos/vid_abc123/content?index=0 \
  -H "Authorization: Bearer sk-cr-..." \
  -o video.mp4

Список моделей

Список доступных моделей с ценами в рублях доступен по адресу /api/models (без авторизации) или на странице «Цены».

GET/api/models
curl https://router.cognify-labs.ru/api/models

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

JSON
{
  "models": [
    {
      "id": "openai/gpt-4o-mini",
      "context_length": 128000,
      "pricing": {
        "prompt": "0.15 RUB",
        "completion": "0.60 RUB"
      }
    }
  ]
}

Обработка ошибок

Ошибки возвращаются с соответствующим HTTP-статусом. Тела ошибок санитизированы: URL OpenRouter, идентификаторы и внутренние метаданные не передаются. 402 означает, что нужно пополнить баланс.

КодЗначение
200Успешный ответ
401Неверный или просроченный ключ
402Недостаточно средств — пополните баланс
403Аккаунт заблокирован или IP не в списке
429Превышен лимит ключа
502Upstream-провайдер недоступен
503Сервис временно недоступен