Saltar al contenido 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
    }
  }
}

Resumen

CometAPI admite la API Anthropic Messages de forma nativa, dándote acceso directo a los modelos Claude con todas las funciones específicas de Anthropic. Usa este endpoint para capacidades exclusivas de Claude, como thinking extendido, almacenamiento en caché de prompts y control de esfuerzo.

Inicio rápido

Usa el SDK oficial de Anthropic; solo configura la URL base a 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)
Se admiten tanto los encabezados x-api-key como Authorization: Bearer para la autenticación. Los SDK oficiales de Anthropic usan x-api-key de forma predeterminada.

Extended Thinking

Activa el razonamiento paso a paso de Claude con el parámetro thinking. La respuesta incluye bloques de contenido thinking que muestran el razonamiento interno de Claude antes de la respuesta final.
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 requiere un budget_tokens mínimo de 1,024. Los tokens de thinking cuentan para tu límite de max_tokens; configura max_tokens lo suficientemente alto como para incluir tanto el thinking como la respuesta.

Almacenamiento en caché de prompts

Almacena en caché prompts de sistema grandes o prefijos de conversación para reducir la latencia y el costo en solicitudes posteriores. Agrega cache_control a los bloques de contenido que deban almacenarse en caché:
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..."}],
)
El uso de caché se informa en el campo usage de la respuesta:
  • cache_creation_input_tokens — tokens escritos en la caché (facturados a una tarifa más alta)
  • cache_read_input_tokens — tokens leídos desde la caché (facturados a una tarifa reducida)
El almacenamiento en caché de prompts requiere un mínimo de 1,024 tokens en el bloque de contenido almacenado en caché. El contenido más corto que esto no se almacenará en caché.

Streaming

Transmite respuestas usando Server-Sent Events (SSE) estableciendo stream: true. Los eventos llegan en este orden:
  1. message_start — contiene los metadatos del mensaje y el uso inicial
  2. content_block_start — marca el inicio de cada bloque de contenido
  3. content_block_delta — fragmentos de texto incrementales (text_delta)
  4. content_block_stop — marca el final de cada bloque de contenido
  5. message_deltastop_reason final y usage completo
  6. message_stop — señala el final del stream
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="")

Control de esfuerzo

Controla cuánto esfuerzo pone Claude en generar una respuesta con 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"
)

Herramientas del servidor

Claude admite herramientas del lado del servidor que se ejecutan en la infraestructura de Anthropic:
Obtén y analiza contenido desde URLs:
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}
    ],
)

Ejemplo de respuesta

Una respuesta típica del 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
  }
}

Diferencias clave con el endpoint compatible con OpenAI

CaracterísticaAnthropic Messages (/v1/messages)Compatible con OpenAI (/v1/chat/completions)
Extended thinkingparámetro thinking con budget_tokensNo disponible
Prompt cachingcache_control en bloques de contentNo disponible
Control de esfuerzooutput_config.effortNo disponible
Web fetch/searchHerramientas del servidor (web_fetch, web_search)No disponible
Encabezado de autenticaciónx-api-key o BearerSolo Bearer
Formato de respuestaFormato Anthropic (bloques content)Formato OpenAI (choices, message)
ModelosSolo ClaudeMulti-provider (GPT, Claude, Gemini, etc.)

Autorizaciones

x-api-key
string
header
requerido

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

Encabezados

anthropic-version
string
predeterminado:2023-06-01

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

Ejemplo:

"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.

Cuerpo

application/json
model
string
requerido

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

Ejemplo:

"claude-sonnet-4-6"

messages
object[]
requerido

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
requerido

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.

Rango requerido: x >= 1
Ejemplo:

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
predeterminado: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.

Rango requerido: 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.

Rango requerido: 0 <= x <= 1
top_k
integer

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

Rango requerido: x >= 0
stream
boolean
predeterminado: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.

Opciones disponibles:
auto,
standard_only

Respuesta

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.

Opciones disponibles:
message
role
enum<string>

Always assistant.

Opciones 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.

Opciones 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.