Anthropic Messages
7/28/26About 2 min
Anthropic Messages
The Anthropic Messages API provides access to Claude models. It supports both x-api-key header authentication and Bearer Token authentication for flexibility.
Endpoint Info
| Item | Value |
|---|---|
| URL | /v1/messages |
| Method | POST |
| Auth | x-api-key header or Bearer Token |
| Content-Type | application/json |
| API Version | anthropic-version: 2023-06-01 |
Authentication
The Anthropic Messages API supports two authentication methods:
Method 1: x-api-key Header (Recommended)
curl https://api.quickapi.store/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{...}'Method 2: Bearer Token
curl https://api.quickapi.store/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{...}'💡 Auth Recommendation
Use the x-api-key header for direct Anthropic SDK integration. Use Bearer Token when routing through OpenAI-compatible middleware or proxies.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Model ID, e.g. claude-sonnet-4-20250514 |
messages | array | Yes | Message array (Anthropic format) |
system | string | No | System prompt |
max_tokens | integer | Yes | Maximum output tokens (required by Anthropic) |
temperature | number | No | Sampling temperature, 0–1. Default 1 |
top_p | number | No | Nucleus sampling, 0–1 |
top_k | integer | No | Top-k sampling |
stream | boolean | No | Enable streaming. Default false |
stop_sequences | array | No | Custom stop sequences |
tools | array | No | Tool definitions for tool use |
tool_choice | object | No | Tool selection mode |
messages Format
Anthropic uses a content array format for messages:
{
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Hello, Claude!"}
]
},
{
"role": "assistant",
"content": [
{"type": "text", "text": "Hello! How can I help you today?"}
]
}
]
}Multimodal with Image
{
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "/9j/4AAQSkZJRgABAQAAAQ..."
}
},
{"type": "text", "text": "What is in this image?"}
]
}
]
}cURL Examples
x-api-key Authentication
curl https://api.quickapi.store/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'Bearer Token Authentication
curl https://api.quickapi.store/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'Streaming Request
curl https://api.quickapi.store/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"stream": true,
"messages": [
{"role": "user", "content": "Write a haiku about coding"}
]
}'Multimodal with Image
curl https://api.quickapi.store/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": "/9j/4AAQSkZJRgABAQAAAQ..."
}
},
{"type": "text", "text": "Describe this image in detail."}
]
}
]
}'Response Example
Normal Response
{
"id": "msg_01Xx7K9qN3vL2mR8p",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-20250514",
"content": [
{
"type": "text",
"text": "Hello! I'm Claude, an AI assistant made by Anthropic. How can I help you today?"
}
],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 24
}
}Streaming Response
event: message_start
data: {"type":"message_start","message":{"id":"msg_01Xx7K9qN3vL2mR8p","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":12,"output_tokens":1}}}
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_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"!"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":24}}
event: message_stop
data: {"type":"message_stop"}Python Example
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.quickapi.store",
api_key="YOUR_API_KEY"
)
# Normal request
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Claude!"}
]
)
print(response.content[0].text)
# Streaming request
with client.messages.stream(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "Write a haiku about coding"}
]
) as stream:
for text in stream.text_stream:
print(text, end="")
# Multimodal with image
import base64
with open("image.jpg", "rb") as f:
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": image_data
}
},
{"type": "text", "text": "What is in this image?"}
]
}
]
)
print(response.content[0].text)⚠️ max_tokens is Required
Unlike OpenAI's API, Anthropic's Messages API requires the max_tokens parameter. Omitting it will result in a 400 error. Set it to your desired maximum output length.

