Passer au contenu principal
POST
/
v1
/
messages
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.cometapi.com",
    api_key="<COMETAPI_KEY>",
)

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

print(message.content[0].text)
{
  "id": "<string>",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "<string>",
      "thinking": "<string>",
      "signature": "<string>",
      "id": "<string>",
      "name": "<string>",
      "input": {}
    }
  ],
  "model": "<string>",
  "stop_reason": "end_turn",
  "stop_sequence": "<string>",
  "usage": {
    "input_tokens": 123,
    "output_tokens": 123,
    "cache_creation_input_tokens": 123,
    "cache_read_input_tokens": 123,
    "cache_creation": {
      "ephemeral_5m_input_tokens": 123,
      "ephemeral_1h_input_tokens": 123
    }
  }
}

Vue d’ensemble

CometAPI prend en charge l’API Anthropic Messages nativement, vous donnant un accès direct aux modèles Claude avec toutes les fonctionnalités spécifiques à Anthropic. Utilisez ce endpoint pour les capacités exclusives à Claude comme extended thinking, prompt caching et le contrôle de l’effort.

Démarrage rapide

Utilisez le SDK Anthropic officiel — définissez simplement l’URL de base sur CometAPI :
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.cometapi.com",
    api_key="<COMETAPI_KEY>",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content[0].text)
Les en-têtes x-api-key et Authorization: Bearer sont tous deux pris en charge pour l’authentification. Les SDK Anthropic officiels utilisent x-api-key par défaut.

Extended Thinking

Activez le raisonnement étape par étape de Claude avec le paramètre thinking. La réponse inclut des blocs de contenu thinking qui montrent le raisonnement interne de Claude avant la réponse finale.
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000,
    },
    messages=[
        {"role": "user", "content": "Prove that there are infinitely many primes."}
    ],
)

for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking[:200]}...")
    elif block.type == "text":
        print(f"Answer: {block.text}")
Thinking nécessite un budget_tokens minimum de 1,024. Les tokens de thinking sont comptabilisés dans votre limite max_tokens — définissez max_tokens suffisamment haut pour couvrir à la fois le thinking et la réponse.

Prompt Caching

Mettez en cache de grands prompts système ou des préfixes de conversation afin de réduire la latence et le coût lors des requêtes suivantes. Ajoutez cache_control aux blocs de contenu qui doivent être mis en cache :
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are an expert code reviewer. [Long detailed instructions...]",
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[{"role": "user", "content": "Review this code..."}],
)
L’utilisation du cache est indiquée dans le champ usage de la réponse :
  • cache_creation_input_tokens — tokens écrits dans le cache (facturés à un tarif plus élevé)
  • cache_read_input_tokens — tokens lus depuis le cache (facturés à un tarif réduit)
Prompt caching nécessite un minimum de 1,024 tokens dans le bloc de contenu mis en cache. Un contenu plus court ne sera pas mis en cache.

Streaming

Diffusez les réponses avec les événements Server-Sent Events (SSE) en définissant stream: true. Les événements arrivent dans cet ordre :
  1. message_start — contient les métadonnées du message et l’usage initial
  2. content_block_start — marque le début de chaque bloc de contenu
  3. content_block_delta — fragments de texte incrémentaux (text_delta)
  4. content_block_stop — marque la fin de chaque bloc de contenu
  5. message_deltastop_reason final et usage complet
  6. message_stop — signale la fin du flux
with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=256,
    messages=[{"role": "user", "content": "Hello"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="")

Contrôle de l’effort

Contrôlez le niveau d’effort que Claude consacre à la génération d’une réponse avec output_config.effort :
message = client.messages.create(
    model="claude-opus-4-6",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Summarize this briefly."}
    ],
    output_config={"effort": "low"},  # "low", "medium", or "high"
)

Outils serveur

Claude prend en charge des outils côté serveur qui s’exécutent sur l’infrastructure d’Anthropic :
Récupérez et analysez le contenu d’URL :
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Analyze the content at https://arxiv.org/abs/1512.03385"}
    ],
    tools=[
        {"type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5}
    ],
)

Exemple de réponse

Une réponse typique de l’endpoint Anthropic de CometAPI :
{
  "id": "msg_bdrk_01UjHdmSztrL7QYYm7CKBDFB",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello!"
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 19,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 0
    },
    "output_tokens": 4
  }
}

Différences clés par rapport à l’endpoint compatible OpenAI

FonctionnalitéAnthropic Messages (/v1/messages)Compatible OpenAI (/v1/chat/completions)
Extended thinkingParamètre thinking avec budget_tokensNon disponible
Prompt cachingcache_control sur les blocs de contenuNon disponible
Contrôle de l’effortoutput_config.effortNon disponible
Récupération/recherche webOutils serveur (web_fetch, web_search)Non disponible
En-tête d’authentificationx-api-key ou BearerBearer uniquement
Format de réponseFormat Anthropic (content blocks)Format OpenAI (choices, message)
ModèlesClaude uniquementMulti-provider (GPT, Claude, Gemini, etc.)

Autorisations

x-api-key
string
header
requis

Your CometAPI key passed via the x-api-key header. Authorization: Bearer <key> is also supported.

En-têtes

anthropic-version
string
défaut:2023-06-01

The Anthropic API version to use. Defaults to 2023-06-01.

Exemple:

"2023-06-01"

anthropic-beta
string

Comma-separated list of beta features to enable. Examples: max-tokens-3-5-sonnet-2024-07-15, pdfs-2024-09-25, output-128k-2025-02-19.

Corps

application/json
model
string
requis

The Claude model to use. See the Models page for current Claude model IDs.

Exemple:

"claude-sonnet-4-6"

messages
object[]
requis

The conversation messages. Must alternate between user and assistant roles. Each message's content can be a string or an array of content blocks (text, image, document, tool_use, tool_result). There is a limit of 100,000 messages per request.

max_tokens
integer
requis

The maximum number of tokens to generate. The model may stop before reaching this limit. When using thinking, the thinking tokens count towards this limit.

Plage requise: x >= 1
Exemple:

1024

system

System prompt providing context and instructions to Claude. Can be a plain string or an array of content blocks (useful for prompt caching).

temperature
number
défaut:1

Controls randomness in the response. Range: 0.0–1.0. Use lower values for analytical tasks and higher values for creative tasks. Defaults to 1.0.

Plage requise: 0 <= x <= 1
top_p
number

Nucleus sampling threshold. Only tokens with cumulative probability up to this value are considered. Range: 0.0–1.0. Use either temperature or top_p, not both.

Plage requise: 0 <= x <= 1
top_k
integer

Only sample from the top K most probable tokens. Recommended for advanced use cases only.

Plage requise: x >= 0
stream
boolean
défaut:false

If true, stream the response incrementally using Server-Sent Events (SSE). Events include message_start, content_block_start, content_block_delta, content_block_stop, message_delta, and message_stop.

stop_sequences
string[]

Custom strings that cause the model to stop generating when encountered. The stop sequence is not included in the response.

thinking
object

Enable extended thinking — Claude's step-by-step reasoning process. When enabled, the response includes thinking content blocks before the answer. Requires a minimum budget_tokens of 1,024.

tools
object[]

Tools the model may use. Supports client-defined functions, web search (web_search_20250305), web fetch (web_fetch_20250910), code execution (code_execution_20250522), and more.

tool_choice
object

Controls how the model uses tools.

metadata
object

Request metadata for tracking and analytics.

output_config
object

Configuration for output behavior.

service_tier
enum<string>

The service tier to use. auto tries priority capacity first, standard_only uses only standard capacity.

Options disponibles:
auto,
standard_only

Réponse

200 - application/json

Successful response. When stream is true, the response is a stream of SSE events.

id
string

Unique identifier for this message (e.g., msg_01XFDUDYJgAACzvnptvVoYEL).

type
enum<string>

Always message.

Options disponibles:
message
role
enum<string>

Always assistant.

Options disponibles:
assistant
content
object[]

The response content blocks. May include text, thinking, tool_use, and other block types.

model
string

The specific model version that generated this response (e.g., claude-sonnet-4-6).

stop_reason
enum<string>

Why the model stopped generating.

Options disponibles:
end_turn,
max_tokens,
stop_sequence,
tool_use,
pause_turn
stop_sequence
string | null

The stop sequence that caused the model to stop, if applicable.

usage
object

Token usage statistics.