API Anthropic compatible

TokenCode est compatible avec le protocole Anthropic Messages API. Vous pouvez utiliser directement le SDK Anthropic ou tout client compatible Claude pour vous connecter.

URL de base

text
https://tokencode.dev

Authentification

Tous les points de terminaison nécessitent une authentification :

  • Bearer Token : Authorization: Bearer <your-api-key>
  • En-tête x-api-key : x-api-key: <your-api-key>

Messages

Point de terminaison Messages compatible Anthropic Claude. Prend en charge les modèles Claude ainsi que d'autres modèles via la conversion de protocole.

bash
curl https://tokencode.dev/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Expliquez l'informatique quantique"}
    ]
  }'

Paramètres de la requête :

Paramètre Type Requis Description
model string Oui ID du modèle (ex. claude-sonnet-4-6)
messages array Oui Tableau d'objets de message
max_tokens integer Oui Nombre maximal de Token générés
stream boolean Non Activer les réponses en streaming
temperature number Non Température d'échantillonnage (0-1)
top_p number Non Probabilité de nucleus sampling
top_k integer Non Échantillonnage Top-K
stop_sequences array Non Séquences d'arrêt
system string/array Non Prompt système
tools array Non Définitions d'outils
tool_choice object Non Stratégie d'appel d'outil

Exemple de réponse :

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "L'informatique quantique est une discipline qui exploite les principes de la mécanique quantique..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

Réponses en streaming

Lorsque "stream": true est défini, la réponse utilise le format SSE avec des types d'événements conformes au protocole Anthropic natif :

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"L'informatique"}}

event: message_stop
data: {"type":"message_stop"}

Conversion automatique de protocole

Lorsque vous appelez un modèle non-Claude via le point de terminaison Anthropic, TokenCode effectue automatiquement la conversion de protocole :

  • Conversion de requête : transformation du format Anthropic Messages vers le format natif du modèle cible (ex. OpenAI Chat Completions)
  • Conversion de réponse : transformation de la réponse du modèle cible au format Anthropic Messages
  • Adaptation du streaming : les types d'événements en streaming sont automatiquement adaptés au format SSE d'Anthropic

Vous pouvez ainsi appeler des modèles OpenAI, Gemini et d'autres via ce point de terminaison depuis des clients natifs Anthropic comme Claude Code, sans aucune adaptation nécessaire.

Utiliser le SDK Anthropic

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://tokencode.dev"
)

# Appeler un modèle Claude
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Bonjour"}]
)

# Appeler un modèle OpenAI — conversion automatique de protocole
message = client.messages.create(
    model="gpt-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Bonjour"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://tokencode.dev",
});

// Appeler un modèle Claude
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Bonjour" }],
});

Entrée multimodale

Prise en charge de l'entrée d'images (Vision) :

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "Décrivez cette image"
                }
            ]
        }
    ]
)

Réponses d'erreur

Les réponses d'erreur suivent le format d'erreur Anthropic :

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
Code HTTP Signification
400 Paramètres de requête invalides
401 Échec d'authentification — clé API invalide
403 Permissions insuffisantes
404 Modèle introuvable
429 Limite de débit ou solde insuffisant
500 Erreur interne du serveur
529 Service en amont surchargé