Passer au contenu principal

Vue d’ensemble

Ce endpoint fournit une compatibilité native avec l’API Anthropic Messages. Utilisez-le pour les modèles Claude avec des fonctionnalités telles que la réflexion étendue. Ce point d’accès conserve le contrat Anthropic natif. messages doit être un tableau de messages user / assistant, system doit être placé dans le champ racine system, et max_tokens est requis. Si votre payload utilise des rôles OpenAI comme system, developer ou tool dans messages, envoyez-le plutôt à /v1/chat/completions.
URL de base pour le SDK Anthropic : https://api.tokenlab.sh (sans suffixe /v1)

En-têtes de requête

x-api-key
string
requis
Votre clé API TokenLab. Alternative au token Bearer.
anthropic-version
string
requis
Version de l’API Anthropic. Utilisez 2023-06-01.

Corps de la requête

model
string
requis
ID du modèle Claude (par ex., claude-sonnet-4-6 ou claude-opus-4-6).
messages
array
requis
Tableau d’objets message avec role et content.
max_tokens
integer
requis
Nombre maximal de tokens à générer.
system
string
Prompt système (séparé du tableau messages).
temperature
number
défaut:"1"
Température d’échantillonnage (0-1).
stream
boolean
défaut:"false"
Active les réponses en streaming.
thinking
object
Configuration de la réflexion étendue (Claude Opus 4.5).
  • type (string) : "enabled" pour activer
  • budget_tokens (integer) : Budget de tokens pour la réflexion
tools
array
Outils disponibles pour le modèle.
tool_choice
object
Comment le modèle doit utiliser les outils. Options : auto, any, tool (outil spécifique).
top_p
number
Paramètre de nucleus sampling. Utilisez soit temperature soit top_p, pas les deux.
top_k
integer
Échantillonner uniquement parmi les K meilleures options pour chaque token.
stop_sequences
array
Séquences d’arrêt personnalisées qui entraîneront l’arrêt de la génération par le modèle.
metadata
object
Métadonnées à attacher à la requête à des fins de suivi.

Réponse

id
string
Identifiant unique du message.
type
string
Toujours message.
role
string
Toujours assistant.
content
array
Tableau de blocs de contenu (text, thinking, tool_use).
model
string
Modèle utilisé.
stop_reason
string
Pourquoi la génération s’est arrêtée (end_turn, max_tokens, tool_use).
usage
object
Utilisation des tokens avec input_tokens et output_tokens.
curl -X POST "https://api.tokenlab.sh/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,
    "system": "You are a helpful assistant.",
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh"
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="You are a helpful assistant.",
    messages=[
        {"role": "user", "content": "Hello, Claude!"}
    ]
)

print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.tokenlab.sh'
});

const message = await client.messages.create({
  model: 'claude-sonnet-4-6',
  max_tokens: 1024,
  system: 'You are a helpful assistant.',
  messages: [
    { role: 'user', content: 'Hello, Claude!' }
  ]
});

console.log(message.content[0].text);
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

func main() {
    payload := map[string]interface{}{
        "model":      "claude-sonnet-4-6",
        "max_tokens": 1024,
        "system":     "You are a helpful assistant.",
        "messages": []map[string]string{
            {"role": "user", "content": "Hello, Claude!"},
        },
    }

    jsonData, _ := json.Marshal(payload)
    req, _ := http.NewRequest("POST", "https://api.tokenlab.sh/v1/messages", bytes.NewBuffer(jsonData))
    req.Header.Set("x-api-key", "sk-your-api-key")
    req.Header.Set("anthropic-version", "2023-06-01")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
<?php
$payload = [
    'model' => 'claude-sonnet-4-6',
    'max_tokens' => 1024,
    'system' => 'You are a helpful assistant.',
    'messages' => [
        ['role' => 'user', 'content' => 'Hello, Claude!']
    ]
];

$ch = curl_init('https://api.tokenlab.sh/v1/messages');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'x-api-key: sk-your-api-key',
        'anthropic-version: 2023-06-01',
        'Content-Type: application/json'
    ],
    CURLOPT_POSTFIELDS => json_encode($payload)
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['content'][0]['text'];
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello! How can I help you today?"
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 15,
    "output_tokens": 10
  }
}

Exemple d’entrée visuelle

Pour les modèles Claude avec prise en charge de la vision, placez les images dans messages[].content sous forme de blocs d’image structurés.
{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Please describe this image."
        },
        {
          "type": "image",
          "source": {
            "type": "url",
            "url": "https://example.com/demo.jpg"
          }
        }
      ]
    }
  ]
}
{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Please describe this image."
        },
        {
          "type": "image",
          "source": {
            "type": "base64",
            "media_type": "image/jpeg",
            "data": "/9j/4AAQSkZJRgABAQ..."
          }
        }
      ]
    }
  ]
}

Exemple de réflexion étendue

message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000
    },
    messages=[{"role": "user", "content": "Solve this math problem..."}]
)

for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking}")
    elif block.type == "text":
        print(f"Response: {block.text}")

Lots de messages Anthropic

TokenLab expose désormais le flux natif Anthropic Message Batches en plus de /v1/messages. Routes disponibles :
  • POST /v1/messages/batches
  • GET /v1/messages/batches
  • GET /v1/messages/batches/:message_batch_id
  • GET /v1/messages/batches/:message_batch_id/results
  • POST /v1/messages/batches/:message_batch_id/cancel
  • DELETE /v1/messages/batches/:message_batch_id
Notes d’exploitation :
  • Utilisez la même clé API TokenLab ainsi que les en-têtes natifs Anthropic.
  • Si des éléments du batch référencent file_id, ajoutez aussi anthropic-beta: files-api-2025-04-14.
  • Les batch jobs conservent les formats natifs de requête/réponse Anthropic, tandis que TokenLab suit leur cycle interne de règlement.