Endpoints compatibles OpenAI
L’IA managée de KolWrite répond dans les mêmes formats que l’API OpenAI. Pointez un SDK OpenAI, ou tout outil qui permet de définir une URL de base, vers KolWrite et utilisez un token d’accès personnel comme clé d’API :
Base URL: https://api.kolwrite.com/api/v1/ai/openai
API key: your kol_... token (scope ai:use)
Les appels consomment les crédits du compte propriétaire du token, mesurés par token d’utilisation. Ils sont distincts des jobs de transcription (voir le guide des agents).
Prérequis
- Le token a le scope
ai:use. Le préréglage Automation de l’app ne l’inclut pas : cochez-le à la création du token. - Le token a été créé depuis une session connectée de l’app KolWrite. Les anciens tokens non liés à un produit sont refusés avec
legal_product_required: créez-en un nouveau. - Le compte a accepté dans l’app l’information en vigueur sur l’IA de tiers. Tant que ce n’est pas fait, l’API répond HTTP 428 avec
legal_acceptance_required. - L’accès à l’API est activé pour le compte (Réglages → Compte → Accès à l’API).
Endpoints
| Endpoint | Rôle |
|---|---|
GET /models | Les modèles utilisables, avec credit_pricing pour chacun |
POST /chat/completions | Complétions de chat, avec streaming ("stream": true) |
POST /responses | L’API Responses |
POST /embeddings | Embeddings |
POST /audio/transcriptions | Texte d’un court clip vocal (file en multipart) |
POST /images/generations | Génération d’images |
Les modèles portent des alias stables : kw-auto (choisit entre un modèle rapide et un modèle plus puissant), kw-fast et kw-pro. GET /models fait foi pour ce qui est disponible avec votre token ; chaque entrée indique context_window et la prise en charge des outils, de la vision et de l’audio.
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
Un court clip ou un enregistrement complet ?
/audio/transcriptions est une voie rapide pour les clips courts : une requête, une réponse, aucun job. Elle ne produit ni étiquettes de locuteurs ni la transcription enregistrée avec ses versions. Pour une réunion, un entretien ou un long fichier, envoyez le média et créez un job de transcription : il renvoie horodatage des mots, locuteurs, SRT et VTT.
Avec want_words=true, la réponse du clip contient aussi words sous la forme {w, start, end}, en secondes depuis le début du clip.
Ce qui diffère d’OpenAI
- Les noms de modèles sont des alias KolWrite, pas des noms de modèles OpenAI.
- Le token est un token d’accès personnel KolWrite, facturé en crédits KolWrite.
kw-maxn’est pas disponible avec des tokens d’API.- Les erreurs utilisent
detail.code, comme dans erreurs.
Questions
Puis-je utiliser le SDK OpenAI avec KolWrite ?
Oui. Définissez l’URL de base sur https://api.kolwrite.com/api/v1/ai/openai et la clé d’API sur un token KolWrite ayant le scope ai:use.
Le streaming et les outils sont-ils pris en charge ?
Les complétions de chat se font en streaming avec "stream": true. GET /models indique, pour chaque modèle, s’il prend en charge les outils, la vision et l’audio.
Quel endpoint transcrit de l’audio ?
POST /audio/transcriptions pour les clips courts ; les jobs de transcription pour tout le reste.