Base URL
https://crea-ai.ru/v1. Передавайте public model slug из GET /models, а не внутренний ID провайдера.
Единый OpenAI-compatible API для текста, embeddings и медиа. Эта страница описывает контракт для человека и автономного AI-агента в production.
https://crea-ai.ru/v1. Передавайте public model slug из GET /models, а не внутренний ID провайдера.
Все вызовы кроме чтения каталога требуют Authorization: Bearer <API_KEY>. Храните ключ в переменной окружения.
Для оплачиваемых операций используйте уникальный Idempotency-Key и повторяйте запрос только с тем же ключом.
Основной endpoint для диалога и agent loop. Обязательны model и messages. Роли: system, user, assistant, tool. temperature: 0–2.
true включает Server-Sent Events. Обрабатывайте события до [DONE].curl https://crea-ai.ru/v1/chat/completions \
-H "Authorization: Bearer $AI_HUB_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: agent-turn-001" \
-H "X-Routing-Mode: stable" \
-H "X-Max-Cost-RUB: 10" \
-d '{"model":"claude-best","messages":[{"role":"system","content":"Отвечай кратко."},{"role":"user","content":"Составь план релиза."}],"temperature":0.2}'import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.AI_HUB_API_KEY, baseURL: "https://crea-ai.ru/v1" });
const stream = await client.chat.completions.create({
model: "gpt-coding", stream: true,
messages: [{ role: "user", content: "Explain this diff" }]
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? "");POST /v1/embeddings принимает строку, массив строк или токены. Используйте модель с capability embeddings; доступны dimensions, encoding_format (float/base64) и user.
POST /v1/responses — OpenAI Responses-совместимый вход для моделей с capability responses. Для привычного сообщения и streaming выбирайте chat/completions.
curl https://crea-ai.ru/v1/embeddings \
-H "Authorization: Bearer $AI_HUB_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: index-doc-42" \
-d '{"model":"embedding-text-3-small","input":["Документ о продукте","Инструкция для агента"],"encoding_format":"float"}'Создание медиа возвращает task. Сохраните task.id, опрашивайте состояние с backoff и скачивайте результат после succeeded.
POST /v1/images/generations
{"model":"image-best","prompt":"Minimalist editorial cover about AI agents","size":"1024x1024","n":1,"routing":{"mode":"stable","max_cost_rub":"25"}}
201 Created
{"object":"task","id":"task_123","status":"succeeded","result_url":"https://crea-ai.ru/v1/tasks/task_123/content","retention_expires_at":"2026-07-18T10:00:00.000Z"}model, prompt, size, n (1–4), response_format и routing. Создаёт task.
Создаёт video task и отвечает 202. Планируйте polling.
queued, running, succeeded, failed, cancelled. GET /content вернёт 307 на файл; учитывайте retention_expires_at.
Ошибка содержит message, type, code, request_id и retryable. Повторяйте только retryable: true. Для 400 исправьте тело, 401 — ключ, 404 — slug/task ID; reserved endpoints вернут 501.
{"error":{"message":"Rate limit exceeded.","type":"rate_limit_error","code":"rate_limit_exceeded","request_id":"req_abc123","retryable":true}}GET /v1/models.