Claude Chat
Anthropic Claude series models support both OpenAI-compatible format and Anthropic native format.
Supported Models
| Model | Positioning |
|---|---|
claude-opus-5 | Latest flagship, strongest reasoning |
claude-opus-4-8 | Opus 4.8 |
claude-sonnet-5 | Latest Sonnet, balanced performance and speed |
claude-sonnet-4-6 | Sonnet 4.6 |
claude-sonnet-4-6-thinking | With thinking output |
claude-haiku-4-5 | Lightweight and fast, lower cost |
claude-fable-5 | Creative writing specialized |
More historical versions (Opus 4.x / Sonnet 4.5, etc.) are available in the "Model Hub" section of the console.
Method 1: OpenAI-Compatible Format (recommended)
Endpoint
POST $URL/v1/chat/completionsRequest Example
bash
curl $URL/v1/chat/completions \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [
{"role": "user", "content": "Write a Python quicksort"}
]
}'python
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="$URL/v1")
resp = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Write a Python quicksort"}],
)
print(resp.choices[0].message.content)ts
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.YOUR_API_KEY,
baseURL: '$URL/v1',
})
const resp = await client.chat.completions.create({
model: 'claude-sonnet-5',
messages: [{ role: 'user', content: 'Write a Python quicksort' }],
})
console.log(resp.choices[0].message.content)Method 2: Anthropic Native Format
If you already have code based on the Anthropic SDK, you can use the native Messages API directly:
Endpoint
POST $URL/v1/messagesRequest Example
bash
curl $URL/v1/messages \
-H "x-api-key: $YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Write a Python quicksort"}
]
}'python
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="$URL",
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Write a Python quicksort"}],
)
print(message.content[0].text)ts
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
apiKey: process.env.YOUR_API_KEY,
baseURL: '$URL',
})
const message = await client.messages.create({
model: 'claude-sonnet-5',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Write a Python quicksort' }],
})
console.log(message.content[0].text)Native Format Highlights
| Difference | Anthropic Native | OpenAI-Compatible |
|---|---|---|
| Auth header | x-api-key: <KEY> (also compatible with Authorization: Bearer) | Authorization: Bearer <KEY> |
max_tokens | Required | Optional |
| system prompt | Top-level system field | role: system inside messages |
| Response structure | content is a block array | choices[0].message |
Recommendation
| Scenario | Recommended Format |
|---|---|
| New project / multi-model unified management | OpenAI-compatible format |
| Existing Anthropic SDK code, Claude Code and other native tools | Anthropic native format |
| Need extended thinking and other Claude-specific parameters | Anthropic native format |
