API Reference

Construisez avec Todou AI Cloud.

Todou AI Cloud expose une API textuelle compatible avec le format OpenAI Chat Completions. Elle prend en charge les conversations multi-tours, les outils, le streaming et les sorties JSON structurées.

URL de base

https://cheftdapi.todoustudio.com

Format

JSON / SSE

Authentification

Bearer API key

Démarrage rapide

Créez un compte, ajoutez des crédits à votre organisation, générez une clé API puis envoyez votre première requête.

  1. 1Créez votre compte
  2. 2Ajoutez des crédits
  3. 3Générez une clé API
  4. 4Appelez un modèle Todou
cURL
curl https://cheftdapi.todoustudio.com/v1/chat/completions \
  -H "Authorization: Bearer sk-todou-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "todou-fast",
    "messages": [
      { "role": "user", "content": "Bonjour Todou" }
    ]
  }'

Exemple JavaScript / Node.js

JavaScript
const response = await fetch("https://cheftdapi.todoustudio.com/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TODOU_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "todou-balanced",
    messages: [
      { role: "system", content: "Tu es un assistant concis." },
      { role: "user", content: "Résume cette réunion." },
    ],
  }),
});

if (!response.ok) throw new Error(await response.text());
const completion = await response.json();
console.log(completion.choices[0].message.content);

Authentification

Ajoutez votre clé à chaque requête avec l’en-tête HTTP suivant :

HTTP
Authorization: Bearer sk-todou-...

Gardez la clé côté serveur. Ne placez jamais une clé Todou dans du JavaScript public, une application mobile ou un dépôt Git. Utilisez une variable d’environnement et révoquez immédiatement toute clé exposée.

Modèles Todou

Les slugs publics restent stables même si le moteur d’inférence évolue. Consultez toujours GET /v1/models pour connaître les modèles actifs et leurs capacités certifiées.

Todou Fast

todou-fast

Rapide et économique.

Todou Balanced

todou-balanced

Équilibre coût et qualité.

Todou Pro

todou-pro

Tâches plus exigeantes.

cURL
curl https://cheftdapi.todoustudio.com/v1/models \
  -H "Authorization: Bearer sk-todou-..."

Chaque modèle expose notamment context_length et capabilities. Une capacité non certifiée est refusée avant l’appel fournisseur et avant toute facturation.

Tarification

Les tokens d’entrée et de sortie sont comptabilisés séparément. Tous les prix ci-dessous sont exprimés en dollars américains par million de tokens.

ModèleEntréeSortie
todou-fast0,50 $2,00 $
todou-balanced2,00 $8,00 $
todou-pro5,00 $20,00 $

Le coût exact de chaque requête apparaît dans votre espace développeur. Les crédits sont détenus par l’organisation et consommés par les projets associés.

Chat Completions

Endpoint principal : POST /v1/chat/completions. Les rôles acceptés sont system, user, assistant et tool.

ParamètreTypeDescription
modelstringSlug du modèle Todou.
messagesarrayHistorique de la conversation.
max_tokensintegerMaximum de tokens générés, 512 par défaut.
temperaturenumberCréativité entre 0 et 2.
streambooleanActive les événements SSE.
toolsarrayFonctions accessibles au modèle.
tool_choicestring | objectContrôle le choix d’outil.
response_formatobjectDemande une sortie structurée.
seedintegerGraine de reproductibilité lorsque supportée.

Structure de la réponse

JSON
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "todou-fast",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "Bonjour !" },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 8, "completion_tokens": 3, "total_tokens": 11 }
}

Tool-calling multi-tours

Déclarez jusqu’à 128 fonctions. Le modèle choisit un outil et retourne un message assistant avec content: null et tool_calls. Votre application exécute la fonction puis renvoie son résultat avec le rôle tool.

1. Déclarer l’outil

JSON
{
  "model": "todou-fast",
  "messages": [
    { "role": "user", "content": "Quel est mon solde ?" }
  ],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_balance",
      "description": "Retourne le solde du client",
      "parameters": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
  }],
  "tool_choice": "auto"
}

2. Renvoyer le résultat

JSON
{
  "model": "todou-fast",
  "messages": [
    { "role": "user", "content": "Quel est mon solde ?" },
    {
      "role": "assistant",
      "content": null,
      "tool_calls": [{
        "id": "call_balance",
        "type": "function",
        "function": { "name": "get_balance", "arguments": "{}" }
      }]
    },
    {
      "role": "tool",
      "tool_call_id": "call_balance",
      "content": "12500 FCFA"
    }
  ],
  "tools": [/* mêmes outils qu’au premier appel */]
}

Votre application garde le contrôle. Todou choisit et décrit l’appel, mais n’exécute jamais votre fonction. Validez les arguments et demandez une confirmation humaine pour les opérations sensibles.

Streaming SSE

Ajoutez stream: true. La réponse utilise text/event-stream et chaque événement commence par data:.

  • Le premier delta annonce le rôle assistant.
  • Les deltas suivants contiennent content ou tool_calls.
  • Le dernier événement contient finish_reason.
  • La séquence se termine par data: [DONE].

JSON structuré

Utilisez response_format pour demander une réponse JSON exploitable par votre application.

JSON
{
  "model": "todou-balanced",
  "messages": [{
    "role": "user",
    "content": "Extrait le nom et le montant : ACME, facture de 42 000 FCFA"
  }],
  "response_format": { "type": "json_object" }
}

Décrivez précisément les propriétés attendues dans le message système ou utilisateur. Validez toujours le résultat dans votre application avant une action métier.

Limites actuelles

ÉlémentLimite
Messages64 par requête
Contenu texte32 000 caractères par message
Outils128 par requête
Tokens de sortie8 192 maximum
Débit Chat Completions60 requêtes/minute par origine

Pas encore disponible. Vision, audio/Realtime, embeddings, RAG hébergé, batch et fallback automatique ne font pas encore partie du contrat public.

Erreurs et traçabilité

Chaque réponse fournit un en-tête X-Request-ID. Conservez-le dans vos logs pour faciliter le diagnostic. Vous pouvez aussi envoyer votre propre identifiant dans cet en-tête.

CodeSignification
400Paramètre, capacité ou contexte invalide
401Clé absente, invalide ou révoquée
402Crédits prépayés insuffisants
404Modèle indisponible
429Limite de débit atteinte
502Échec du moteur d’inférence
503Modèle en maintenance ou fournisseur non configuré

Prêt à effectuer votre premier appel ?

Créez une clé Todou et lancez votre première intégration.

Obtenir une clé