Create a Message
Use the Anthropic Messages API through CometAPI to call Claude models with adaptive thinking, prompt caching, tool use, web search, streaming, and effort control.
x-api-key and Authorization: Bearer headers are supported for authentication. The official Anthropic SDKs use x-api-key by default.Quick start
To use the official Anthropic SDK with CometAPI, set the base URL:Control adaptive thinking
Use adaptive thinking withoutput_config.effort to control how much work Claude applies to a response. Newer Claude models reject the legacy manual thinking shape thinking={"type": "enabled", "budget_tokens": ...}.
Cache prompts
To reduce latency and cost on subsequent requests, cache large system prompts or conversation prefixes. Addcache_control to content blocks that should be cached:
usage field:
cache_creation_input_tokens— tokens written to cache (billed at a higher rate)cache_read_input_tokens— tokens read from cache (billed at a reduced rate)
Stream responses
To stream responses using Server-Sent Events (SSE), setstream: true. Events arrive in this order:
message_start— contains the message metadata and initial usagecontent_block_start— marks the beginning of each content blockcontent_block_delta— incremental text chunks (text_delta)content_block_stop— marks the end of each content blockmessage_delta— finalstop_reasonand completeusagemessage_stop— signals the end of the stream
Control effort
To control how much effort Claude puts into generating a response, useoutput_config.effort:
Use server tools
Claude supports server-side tools that run on Anthropic’s infrastructure:- Web Fetch
- Web Search
Response example
A typical response from CometAPI’s Anthropic endpoint:Compare with OpenAI-compatible endpoint
| Feature | Anthropic Messages (/v1/messages) | OpenAI-Compatible (/v1/chat/completions) |
|---|---|---|
| Adaptive thinking | thinking with type: "adaptive" and output_config.effort | Not available |
| Prompt caching | cache_control on content blocks | Not available |
| Effort control | output_config.effort | Not available |
| Web fetch/search | Server tools (web_fetch, web_search) | Not available |
| Auth header | x-api-key or Bearer | Bearer only |
| Response format | Anthropic format (content blocks) | OpenAI format (choices, message) |
| Models | Claude only | Multi-provider (GPT, Claude, Gemini, etc.) |
Authorizations
Your CometAPI key passed via the x-api-key header. Authorization: Bearer $COMETAPI_KEY is also supported.
Headers
The Anthropic API version to use. Defaults to 2023-06-01.
"2023-06-01"
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.
Body
The Claude model to use. See the Models page for available Claude model IDs.
"claude-sonnet-5"
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.
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.
x >= 11024
System prompt providing context and instructions to Claude. Can be a plain string or an array of content blocks (useful for prompt caching).
Model-dependent sampling control. Many newer Claude models reject non-default temperature values on the Messages API. Omit this field unless you have verified that the selected model accepts it; if the model returns an unsupported or deprecated-parameter error, remove the field instead of substituting another sampling value.
0 <= x <= 11
Model-dependent nucleus sampling control. Many newer Claude models reject non-default top_p values on the Messages API. Omit this field unless you have verified support for the selected model. Do not set temperature and top_p together.
0 <= x <= 11
Model-dependent top-k sampling control. Many newer Claude models reject non-default top_k values on the Messages API. Omit this field unless you have verified support for the selected model.
x >= 00
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.
Custom strings that cause the model to stop generating when encountered. The stop sequence is not included in the response.
Controls Claude thinking when the selected model supports a configurable thinking mode. For newer adaptive-thinking models, use {"type":"adaptive"} with output_config.effort, or omit thinking when adaptive thinking is already the model default. Manual {"type":"enabled","budget_tokens":...} is supported only by older models and is rejected by newer Claude models.
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.
Controls how the model uses tools.
Request metadata for tracking and analytics.
Configuration for response effort and output format. Field support depends on the selected Claude model.
The service tier to use. auto tries priority capacity first, standard_only uses only standard capacity.
auto, standard_only Response
Successful response. When stream is true, the response is a stream of SSE events.
Unique identifier for this message (e.g., msg_01XFDUDYJgAACzvnptvVoYEL).
Always message.
message Always assistant.
assistant The response content blocks. May include text, thinking, tool_use, and other block types.
The specific model version that generated this response, such as claude-sonnet-5.
Why the model stopped generating. refusal can be returned as a successful HTTP response when the model declines a request.
end_turn, max_tokens, stop_sequence, tool_use, pause_turn, refusal The stop sequence that caused the model to stop, if applicable.
Token usage statistics.