Saltar para o conteúdo 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
    }
  }
}

Visão geral

A CometAPI oferece suporte nativo à API Anthropic Messages, dando a você acesso direto aos modelos Claude com todos os recursos específicos da Anthropic. Use este endpoint para funcionalidades exclusivas do Claude, como extended thinking, prompt caching e controle de esforço.

Início rápido

Use o SDK oficial da Anthropic — basta definir a URL base para 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)
Tanto os cabeçalhos x-api-key quanto Authorization: Bearer são compatíveis para autenticação. Os SDKs oficiais da Anthropic usam x-api-key por padrão.

Extended Thinking

Ative o raciocínio passo a passo do Claude com o parâmetro thinking. A resposta inclui blocos de conteúdo thinking que mostram o raciocínio interno do Claude antes da resposta 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 requer um budget_tokens mínimo de 1.024. Os tokens de thinking contam para o seu limite de max_tokens — defina max_tokens alto o suficiente para acomodar tanto o thinking quanto a resposta.

Prompt Caching

Armazene em cache prompts de sistema grandes ou prefixos de conversa para reduzir latência e custo em solicitações subsequentes. Adicione cache_control aos blocos de conteúdo que devem ser armazenados em 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..."}],
)
O uso do cache é informado no campo usage da resposta:
  • cache_creation_input_tokens — tokens gravados no cache (cobrados a uma taxa mais alta)
  • cache_read_input_tokens — tokens lidos do cache (cobrados a uma taxa reduzida)
Prompt caching exige um mínimo de 1.024 tokens no bloco de conteúdo armazenado em cache. Conteúdos menores do que isso não serão armazenados em cache.

Streaming

Transmita respostas usando Server-Sent Events (SSE) definindo stream: true. Os eventos chegam nesta ordem:
  1. message_start — contém os metadados da mensagem e o uso inicial
  2. content_block_start — marca o início de cada bloco de conteúdo
  3. content_block_delta — blocos de texto incrementais (text_delta)
  4. content_block_stop — marca o fim de cada bloco de conteúdo
  5. message_deltastop_reason final e usage completo
  6. message_stop — sinaliza o fim do 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="")

Controle de esforço

Controle quanto esforço o Claude coloca na geração de uma resposta com 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"
)

Ferramentas do servidor

O Claude oferece suporte a ferramentas do lado do servidor que são executadas na infraestrutura da Anthropic:
Busque e analise conteúdo de 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}
    ],
)

Exemplo de resposta

Uma resposta típica do endpoint Anthropic da 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
  }
}

Principais diferenças em relação ao endpoint compatível com OpenAI

RecursoAnthropic Messages (/v1/messages)OpenAI-Compatible (/v1/chat/completions)
Pensamento estendidoParâmetro thinking com budget_tokensNão disponível
Cache de Promptcache_control em blocos de conteúdoNão disponível
Controle de esforçooutput_config.effortNão disponível
Web fetch/searchFerramentas do servidor (web_fetch, web_search)Não disponível
Cabeçalho de autenticaçãox-api-key ou BearerApenas Bearer
Formato da respostaFormato Anthropic (content blocks)Formato OpenAI (choices, message)
ModelosApenas ClaudeMulti-provider (GPT, Claude, Gemini, etc.)

Autorizações

x-api-key
string
header
obrigatório

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

Cabeçalhos

anthropic-version
string
padrão:2023-06-01

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

Exemplo:

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

Corpo

application/json
model
string
obrigatório

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

Exemplo:

"claude-sonnet-4-6"

messages
object[]
obrigatório

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
obrigatório

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.

Intervalo necessário: x >= 1
Exemplo:

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
padrão: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.

Intervalo necessário: 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.

Intervalo necessário: 0 <= x <= 1
top_k
integer

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

Intervalo necessário: x >= 0
stream
boolean
padrão: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.

Opções disponíveis:
auto,
standard_only

Resposta

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.

Opções disponíveis:
message
role
enum<string>

Always assistant.

Opções disponíveis:
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.

Opções disponíveis:
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.