Aller au contenu
TukaiDevelopers

Rechercher dans la documentation

Console
Sommaire de la documentation

Démarrer

Compatibilité OpenAI et Anthropic

Ce que l'API Tukai reprend des API OpenAI et Anthropic, ce qu'elle ne reprend pas, et ce qu'il faut changer dans une intégration existante.

Vérifié le 4 octobre 2026Version MarkdownSignaler une erreur sur cette page

L'API Tukai imite quatre opérations des API OpenAI et Anthropic, pour que les SDK officiels fonctionnent sans être modifiés. Elle n'est pas une copie complète de ces API : toute opération absente de cette page n'existe pas chez Tukai.

Ce qui change dans votre intégration

RéglageSDK OpenAISDK Anthropic
URL de basehttps://chat.tuk-ai.com/v1https://chat.tuk-ai.com (le SDK ajoute lui-même /v1)
Clétuk_sk_… dans apiKeytuk_sk_… dans apiKey
Identifiant de modèleUn identifiant Tukai, par exemple chat-anthropic-claude-haiku-4-5Le même identifiant Tukai

Les identifiants de modèle sont ceux de Tukai, jamais ceux du fournisseur d'origine : gpt-… ou claude-… seuls sont refusés. La liste est sur la page Modèles.

Le reste du code (messages, max_tokens, lecture de la réponse) ne change pas pour un appel de texte simple.

Opérations disponibles

OpérationFormeÉtat
POST /v1/chat/completionsOpenAIPris en charge texte, avec ou sans stream
POST /v1/messagesAnthropicPris en charge texte, avec ou sans stream ; max_tokens obligatoire
POST /v1/messages/count_tokensAnthropicPris en charge estimation locale, gratuite, sans appel au modèle
GET /v1/modelsCatalogue TukaiPartiel public et sans clé ; les objets ont des champs Tukai (display_name, available…) en plus de id
POST /v1/responses, embeddings, images, audio, files, batches, assistantsOpenAINon pris en charge
GET /v1/models/{id}, Message Batches, FilesAnthropicNon pris en charge

Fonctions avancées

FonctionÉtatPrécision
Streaming (SSE)PartielCodé et couvert par les tests du dépôt ; pas encore exécuté contre la production dans le cadre de cette documentation. Côté OpenAI, le flux se termine par data: [DONE].
Images ou audio en entréeNon pris en chargeLes parties image_url ou input_audio sont ignorées : la requête répond quand même, à partir du seul texte. N'envoyez pas d'image en comptant sur une analyse.
Outils (tools) côté OpenAINon pris en chargeLa réponse chat.completion ne contient que du texte (message.content), jamais tool_calls.
Outils (tools) côté AnthropicNon testéLa traduction tool_use ↔ tool_calls existe dans le code ; elle n'a pas été vérifiée de bout en bout ici.
finish_reason côté OpenAIPartielVaut toujours stop, même quand la sortie a été coupée par max_tokens.
Sortie structurée (response_format, JSON schema)Non pris en chargeIgnorée sans avertissement : seuls model, messages (texte) et max_tokens sont transmis au modèle.
temperature, top_p, stop et autres réglages OpenAINon pris en chargeAcceptés par la validation mais ignorés sans avertissement.
thinking, cache_control, outils côté serveur AnthropicNon pris en chargeNon portés ; signalés comme avertissement côté serveur.
Appel direct depuis un navigateurNon pris en chargeUsage non pris en charge : une clé ne doit jamais se trouver dans du code exécuté chez vos utilisateurs.

En-têtes

En-têteEffet
Authorization: Bearer tuk_sk_…Forme canonique (SDK OpenAI).
x-api-key: tuk_sk_…Accepté (SDK Anthropic). Envoyez l'un ou l'autre, pas les deux : par l'URL publiée, seul Authorization est retenu quand les deux sont présents.
anthropic-version, anthropic-betaAcceptés, non transmis au fournisseur.
x-request-id (réponse)Identifiant de la requête, sur chaque réponse. Le SDK OpenAI l'expose (requestID en TypeScript) ; le SDK Anthropic ne le lit pas, il faut le relever dans les en-têtes HTTP.
ratelimit-limit, ratelimit-remaining, ratelimit-reset (réponse)État du débit de la clé.

Erreurs

Les erreurs gardent l'enveloppe du fournisseur imité ({"error": {...}} pour OpenAI, {"type": "error", "error": {...}} pour Anthropic), pour que le SDK les lise normalement. Selon la cause, le message est en anglais ou en français : lisez le champ type. Détail des codes : Erreurs.

Versions vérifiées

Le 3 octobre 2026, contre la production, sans appel payant (clé volontairement invalide) :

  • openai 7.27.0 (Node.js) : models.list() répond ; chat.completions.create() atteint la bonne route et lève AuthenticationError (401).
  • @anthropic-ai/sdk 0.131.0 (Node.js) : messages.create() atteint la bonne route et lève AuthenticationError (401).