API OpenAI compatible

TokenCode est entièrement compatible avec le protocole OpenAI API. Vous pouvez utiliser directement le SDK OpenAI ou tout client compatible OpenAI pour vous connecter.

URL de base

text
https://tokencode.dev/v1

Authentification

Tous les points de terminaison nécessitent une authentification :

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

Lister les modèles

Retourne la liste des modèles actuellement disponibles.

bash
curl https://tokencode.dev/v1/models \
  -H "Authorization: Bearer sk-your-api-key"

Exemple de réponse :

json
{
  "object": "list",
  "data": [
    { "id": "gpt-5.5", "object": "model", "owned_by": "openai" },
    { "id": "claude-sonnet-4-6", "object": "model", "owned_by": "anthropic" },
    { "id": "gemini-2.5-pro", "object": "model", "owned_by": "google" }
  ]
}

Chat Completions

Point de terminaison de complétion de conversation compatible OpenAI. Prend en charge tous les modèles en amont, pas uniquement les modèles OpenAI.

bash
curl https://tokencode.dev/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "system", "content": "Vous êtes un assistant utile."},
      {"role": "user", "content": "Expliquez l'informatique quantique"}
    ],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

Paramètres de la requête :

Paramètre Type Requis Description
model string Oui ID du modèle (ex. gpt-5.5, claude-sonnet-4-6)
messages array Oui Tableau d'objets de message
stream boolean Non Activer les réponses en streaming
temperature number Non Température d'échantillonnage (0-2)
max_tokens integer Non Nombre maximal de Token générés
top_p number Non Probabilité de nucleus sampling
n integer Non Nombre de candidats à générer
stop string/array Non Séquence d'arrêt
presence_penalty number Non Pénalité de présence (-2 à 2)
frequency_penalty number Non Pénalité de fréquence (-2 à 2)
tools array Non Définitions d'outils Function Calling
tool_choice string/object Non Stratégie d'appel d'outil

Exemple de réponse :

json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1700000000,
  "model": "gpt-5.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "L'informatique quantique est une discipline qui exploite les principes de la mécanique quantique..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 128,
    "total_tokens": 153
  }
}

Réponses en streaming

Lorsque "stream": true est défini, la réponse utilise le format SSE :

text
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"L'"},"index":0}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"informatique"},"index":0}]}

data: [DONE]

Embeddings

Génère des embeddings vectoriels de texte.

bash
curl https://tokencode.dev/v1/embeddings \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "Hello world"
  }'

Paramètres de la requête :

Paramètre Type Requis Description
model string Oui ID du modèle d'embedding
input string/array Oui Texte à intégrer
encoding_format string Non Format d'encodage (float ou base64)

Conversion automatique de protocole

L'un des avantages clés de TokenCode est la conversion automatique de protocole. Lorsque vous appelez un modèle non-OpenAI (comme Claude ou Gemini) via le point de terminaison compatible OpenAI, la plateforme effectue automatiquement :

  1. Conversion de requête : transformation du corps de la requête au format OpenAI vers le format natif du modèle cible
  2. Conversion de réponse : transformation de la réponse native du modèle au format OpenAI
  3. Adaptation du streaming : les réponses en streaming sont également converties automatiquement

Vous pouvez ainsi appeler tous les modèles avec le même code SDK OpenAI, sans vous soucier des différences de protocole sous-jacentes.

Utiliser le SDK OpenAI

python
from openai import OpenAI

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

# Appeler un modèle OpenAI
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Bonjour"}]
)

# Appeler un modèle Claude — même code, conversion automatique de protocole
response = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Bonjour"}]
)

# Appeler un modèle Gemini — de la même manière
response = client.chat.completions.create(
    model="gemini-2.5-pro",
    messages=[{"role": "user", "content": "Bonjour"}]
)

Réponses d'erreur

Toutes les erreurs suivent le format d'erreur OpenAI :

json
{
  "error": {
    "message": "Invalid API key",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}
Code HTTP Signification
400 Paramètres de requête invalides
401 Échec d'authentification — clé API invalide
403 Permissions insuffisantes — modèle non disponible
429 Limite de débit ou solde insuffisant
500 Erreur interne du serveur
502 Erreur du service en amont