Claude Messages
The Anthropic native Messages protocol. If your code uses the official anthropic SDK, just point base_url at the gateway. You can also call Claude models through the OpenAI-compatible Chat Completions endpoint.
POST
https://apicdn.xyc.ai/v1/messages
Different Auth Header
This protocol uses x-api-key (not Authorization: Bearer) and requires anthropic-version.
Request Example
from anthropic import Anthropic
client = Anthropic(
base_url="https://apicdn.xyc.ai",
api_key="sk-xxxxxxxx",
)
msg = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Introduce yourself in one sentence."}],
)
print(msg.content[0].text)
curl https://apicdn.xyc.ai/v1/messages \
-H "x-api-key: sk-xxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Introduce yourself in one sentence."}
]
}'
Main Parameters
| Parameter | Type | Notes |
|---|---|---|
model | string | Required. Claude model name |
messages | array | Required. Conversation messages |
max_tokens | int | Required. Maximum tokens to generate |
system | string | System prompt |
stream | bool | Whether to stream |
temperature | number | Sampling temperature |
Response Structure
{
"id": "msg_xxxxxxxx",
"type": "message",
"role": "assistant",
"model": "claude-opus-4-8",
"content": [{"type": "text", "text": "..."}],
"stop_reason": "end_turn",
"usage": {"input_tokens": 12, "output_tokens": 30}
}