Эндпоинты, совместимые с OpenAI
Управляемый ИИ KolWrite отвечает в тех же форматах, что и API OpenAI. Направьте SDK OpenAI или любой инструмент, где можно задать базовый URL, на KolWrite и используйте персональный токен доступа как ключ API:
Base URL: https://api.kolwrite.com/api/v1/ai/openai
API key: your kol_... token (scope ai:use)
Вызовы тратят кредиты аккаунта, которому принадлежит токен, по расходу токенов. Они не связаны с задачами расшифровки (см. руководство для агентов).
Требования
- У токена есть область доступа
ai:use. В набор Automation в приложении она не входит, поэтому отметьте её при создании токена. - Токен создан из сессии, в которую выполнен вход в приложении KolWrite. Старые токены, не привязанные к продукту, отклоняются с
legal_product_required: создайте новый. - Аккаунт принял в приложении действующее уведомление об ИИ сторонних поставщиков. Пока этого нет, API отвечает HTTP 428 с
legal_acceptance_required. - Доступ к API включён для аккаунта (Настройки → Аккаунт → Доступ к API).
Эндпоинты
| Эндпоинт | Что делает |
|---|---|
GET /models | Доступные модели с credit_pricing для каждой |
POST /chat/completions | Чат-ответы, в том числе потоком ("stream": true) |
POST /responses | Responses API |
POST /embeddings | Эмбеддинги |
POST /audio/transcriptions | Текст короткой голосовой записи (file в multipart) |
POST /images/generations | Генерация изображений |
Модели называются стабильными псевдонимами: kw-auto (выбирает между быстрой и более сильной моделью), kw-fast и kw-pro. Что доступно вашему токену, надёжнее всего показывает GET /models; каждая запись содержит context_window и сведения о поддержке инструментов, зрения и звука.
Python
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.kolwrite.com/api/v1/ai/openai",
api_key=os.environ["KOLWRITE_TOKEN"],
)
reply = client.chat.completions.create(
model="kw-auto",
messages=[{"role": "user", "content": "Summarize this transcript in five bullets: ..."}],
)
print(reply.choices[0].message.content)
vectors = client.embeddings.create(model="kw-embedding", input=["first text", "second text"])
JavaScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.kolwrite.com/api/v1/ai/openai",
apiKey: process.env.KOLWRITE_TOKEN,
});
const stream = await client.chat.completions.create({
model: "kw-fast",
messages: [{ role: "user", content: "Write a title for this meeting." }],
stream: true,
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
curl
curl https://api.kolwrite.com/api/v1/ai/openai/chat/completions \
-H "Authorization: Bearer $KOLWRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model": "kw-auto", "messages": [{"role": "user", "content": "Hello"}]}'
curl https://api.kolwrite.com/api/v1/ai/openai/audio/transcriptions \
-H "Authorization: Bearer $KOLWRITE_TOKEN" \
-F file=@clip.wav -F model=kw-fast -F language=auto
Короткий клип или полная запись?
/audio/transcriptions — быстрый путь для коротких клипов: один запрос, один ответ, без задачи. Он не создаёт метки говорящих и сохранённую расшифровку с версиями. Для совещания, интервью или длинного файла загрузите медиа и создайте задачу расшифровки: она возвращает тайминги слов, говорящих, SRT и VTT.
С want_words=true ответ для клипа содержит ещё и words в виде {w, start, end} в секундах от начала клипа.
Чем это отличается от OpenAI
- Названия моделей — псевдонимы KolWrite, а не названия моделей OpenAI.
- Токен — персональный токен доступа KolWrite, расчёт ведётся в кредитах KolWrite.
kw-maxнедоступна с API-токенами.- Ошибки используют
detail.code, как в разделе ошибки.
Вопросы
Можно ли использовать SDK OpenAI с KolWrite?
Да. Задайте базовый URL https://api.kolwrite.com/api/v1/ai/openai, а ключом API сделайте токен KolWrite с областью доступа ai:use.
Поддерживаются ли потоковая передача и инструменты?
Чат-ответы идут потоком при "stream": true. GET /models показывает для каждой модели, поддерживает ли она инструменты, зрение и звук.
Какой эндпоинт расшифровывает аудио?
POST /audio/transcriptions — для коротких клипов; задачи расшифровки — для всего остального.