Documentation
Une base, une clé, des modèles nommés par Kairo. Les exemples sont en cURL, JavaScript et Python.
Démarrage
Créez un compte. La clé offerte apparaît dans Clés API : copiez-la tout de suite, elle ne sera plus affichée. Placez-la dans KAIRO_API_KEY. La base est https://kairo.doc4geeks.com/v1.
curl https://kairo.doc4geeks.com/v1/chat/completions \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-text", "messages": [ { "role": "user", "content": "Dis bonjour en une phrase." } ]}'Authentification
Chaque requête porte Authorization: Bearer sk-kairo-…. Une clé désactivée, supprimée, ou au-delà de son plafond, est refusée. Le compte suspendu aussi. Il n'y a pas de clé publique.
Crédits et unités
1 crédit = 1 XAF. Le texte est facturé par million de tokens, entrée et sortie séparées. Une image coûte un forfait. La voix et la transcription se comptent à la minute, arrondies au centième de crédit. En dessous de 0,01 crédit, l'appel est compté 0,01. Si le solde ne couvre pas l'appel, rien n'est débité.
Exemple kairo-text, 2 000 tokens entrée et 1 000 sortie : 0,16 + 0,32 = 0,48 crédit.
Points d'accès
| Méthode | Chemin | Modèles |
|---|---|---|
| POST | /chat/completions | kairo-text, kairo-text-pro, kairo-vision, kairo-json |
| POST | /images/generations | kairo-image |
| POST | /images/edits | kairo-image-edit |
| POST | /audio/speech | kairo-voice |
| POST | /audio/transcriptions | kairo-transcribe |
| GET | /models | catalogue et prix |
| GET | /credits | solde de la clé |
Texte
kairo-text pour le quotidien, kairo-text-pro quand la consigne est longue ou le code délicat.
curl https://kairo.doc4geeks.com/v1/chat/completions \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-text-pro", "messages": [ { "role": "user", "content": "Explique ce bug en cinq lignes, puis propose le correctif." } ]}'Image
Formats : 1024×1024, 1024×768, 768×1024. La retouche envoie le fichier source.
curl https://kairo.doc4geeks.com/v1/images/generations \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-image", "prompt": "Marché au lever du soleil, parasols ocre, sans texte.", "size": "1024x1024"}'curl https://kairo.doc4geeks.com/v1/images/edits \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-image-edit", "prompt": "Rends la lumière plus basse, garde les parasols.", "size": "1024x1024", "image": "@/chemin/source.png"}'Voix et transcription
Voix disponibles : amina, yael, malo. La transcription accepte un fichier audio.
curl https://kairo.doc4geeks.com/v1/audio/speech \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-voice", "input": "Le marché s'ouvre avec le soleil.", "voice": "amina"}'curl https://kairo.doc4geeks.com/v1/audio/transcriptions \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -F "model=kairo-transcribe" \ -F "file=@marche-bassam.webm"Vision et JSON
curl https://kairo.doc4geeks.com/v1/chat/completions \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-vision", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Que vend l'étal au premier plan ?" }, { "type": "image_url", "image_url": { "url": "https://kairo.doc4geeks.com/exemples/marche.webp" } } ] } ]}'curl https://kairo.doc4geeks.com/v1/chat/completions \ -H "Authorization: Bearer $KAIRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "kairo-json", "messages": [ { "role": "user", "content": "Extrais lieu, moment et ambiance." } ], "response_format": { "type": "json_schema", "json_schema": { "name": "legende", "schema": { "type": "object", "properties": { "lieu": { "type": "string" }, "moment": { "type": "string" }, "ambiance": { "type": "string" } }, "required": [ "lieu", "moment", "ambiance" ] } } }}'Erreurs
Le corps est toujours un objet error avec code, message et request_id.
- insufficient_credits — solde ou plafond de clé insuffisant. Rien n'est débité.
- invalid_api_key — clé inconnue, désactivée ou supprimée.
- maintenance — service en pause. Réessayez. Rien n'est débité.
- rate_limited — trop d'appels sur cette clé. L'en-tête indique quand réessayer.
{
"error": {
"type": "maintenance",
"message": "Service temporairement en maintenance, réessayez dans quelques minutes."
}
}