Aller au contenu principal

Anthropic Messages

POST /v1/messages

Le format de messagerie natif d'Anthropic pour les modèles Claude. Vous pouvez également appeler les modèles Claude via le point de terminaison Chat Completions au format OpenAI.

RequestREQUEST
POSThttps://test.kailin.com.cn/v1/messages
ResponseRESPONSE
Fill in the request and hit Send — the response shows up here

Requête​

curl https://test.kailin.com.cn/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: sk-your-token" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Hello, introduce yourself" }
]
}'
Remarque

Les en-têtes x-api-key: sk-xxx et Authorization: Bearer sk-xxx fonctionnent tous les deux. L'en-tête anthropic-version est optionnel.

Corps de la requête​

ParamètreTypeObligatoireDescription
modelstringOuiNom du modèle Claude
max_tokensnumberOuiNombre maximal de tokens à générer (obligatoire dans le format Anthropic)
messagesarrayOuiTableau de messages ; role n'accepte que user / assistant
systemstring / arrayNonPrompt système, transmis séparément des messages
streambooleanNonSortie en streaming (SSE, types d'événements ci-dessous)
temperaturenumberNon0–1, défaut 1
top_p / top_knumberNonParamètres d'échantillonnage
stop_sequencesarrayNonSéquences d'arrêt
toolsarrayNonDéfinitions d'outils (name / description / input_schema)
tool_choiceobjectNon{"type": "auto"} / {"type": "any"} / {"type": "tool", "name": "..."}

Exemple avec un prompt système et une image :

{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "You are a rigorous technical writer.",
"messages": [
{
"role": "user",
"content": [
{ "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": "<base64>" } },
{ "type": "text", "text": "Describe this architecture diagram" }
]
}
]
}

Réponse (sans streaming)​

{
"id": "msg_abc123",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-6",
"content": [
{ "type": "text", "text": "Hello! I'm Claude…" }
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 18,
"output_tokens": 45
}
}
ChampDescription
content[]Blocs de contenu — type peut être text / tool_use / thinking
stop_reasonend_turn / max_tokens / stop_sequence / tool_use
usage.input_tokens / output_tokensConsommation de tokens

Événements de streaming​

Avec "stream": true, la réponse est du SSE avec des types event: distincts :

event: message_start
data: {"type":"message_start","message":{...}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":45}}

event: message_stop
data: {"type":"message_stop"}
ÉvénementDescription
message_startDébut du message, avec la consommation initiale
content_block_start / _delta / _stopDébut / delta / fin d'un bloc de contenu — les deltas arrivent dans delta.text
message_deltaMise à jour de statut de premier niveau (stop_reason, consommation finale)
message_stopFin du message
pingBattement de maintien de connexion (keep-alive)
errorErreur dans le flux

Utilisation du SDK Anthropic​

from anthropic import Anthropic

client = Anthropic(
api_key="sk-your-token",
base_url="https://test.kailin.com.cn",
)

message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
apiKey: 'sk-your-token',
baseURL: 'https://test.kailin.com.cn',
});

const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello' }],
});
console.log(message.content[0].text);
Astuce

Avec le SDK, définissez base_url sur l'adresse racine (sans /v1) — le SDK ajoute /v1/messages automatiquement.