Skip to content

Claude Messages ​

Call Claude models via the Anthropic Messages API native protocol. Fully compatible with Claude SDK, Claude Code, and the native Anthropic request format.

Quick Start ​

Step 1: Get your API Key from the Console.

Step 2: Send a request:

bash
curl -X POST "https://open.dieyuyun.com/v1/messages" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk-xxx" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, introduce yourself"}
    ]
  }'
python
import anthropic

client = anthropic.Anthropic(
    base_url="https://open.dieyuyun.com",
    api_key="sk-xxx"
)

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, introduce yourself"}
    ]
)

print(message.content[0].text)
javascript
import Anthropic from '@anthropic-ai/sdk'

const client = new Anthropic({
  baseURL: 'https://open.dieyuyun.com',
  apiKey: 'sk-xxx',
})

const message = await client.messages.create({
  model: 'claude-sonnet-4-20250514',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'Hello, introduce yourself' }],
})

console.log(message.content[0].text)

Step 3: Read the response from content[0].text.

Endpoint ​

ItemValue
MethodPOST
Path/v1/messages
Base URLhttps://open.dieyuyun.com
ProtocolAnthropic Messages API

Authentication ​

The Claude Messages API uses the following authentication headers:

HeaderValueDescription
x-api-keysk-xxxAPI Key authentication
anthropic-version2023-06-01Anthropic API version
Content-Typeapplication/jsonRequest body format

TIP

When using the Anthropic SDK, the anthropic-version header is added automatically. You only need to configure base_url and api_key.

Supported Models ​

ModelContext LengthDescription
claude-sonnet-4-20250514200KClaude 4 Sonnet, balanced
claude-opus-4-20250514200KClaude 4 Opus, strongest
claude-3-5-sonnet-20241022200KClaude 3.5 Sonnet
claude-3-5-haiku-20241022200KClaude 3.5 Haiku, fast
claude-3-opus-20240229200KClaude 3 Opus

TIP

See the full model list in the Console.

Request Parameters ​

FieldTypeRequiredDefaultDescription
modelstringYes—Model identifier, e.g. claude-sonnet-4-20250514
messagesarrayYes—Message list, supports user and assistant roles
max_tokensintegerYes—Maximum output tokens (required in Anthropic protocol)
systemstring / arrayNo—System prompt, separate from messages
streambooleanNofalseEnable streaming output
temperaturenumberNo1.0Sampling randomness, range 0~1
top_pnumberNo—Nucleus sampling parameter
top_kintegerNo—Top-K sampling
stop_sequencesarrayNo—Strings that stop generation
toolsarrayNo—Tool definitions (function calling)
tool_choiceobjectNo—Tool calling strategy
thinkingobjectNo—Extended Thinking configuration
metadataobjectNo—Request metadata, e.g. user_id

Message Format ​

The message structure in Claude Messages API differs from OpenAI:

json
{
  "role": "user",
  "content": "Hello"
}

Multimodal content is also supported:

json
{
  "role": "user",
  "content": [
    { "type": "text", "text": "What's in this image?" },
    {
      "type": "image",
      "source": {
        "type": "base64",
        "media_type": "image/jpeg",
        "data": "/9j/4AAQ..."
      }
    }
  ]
}

Request Examples ​

Conversation with System Prompt ​

bash
curl -X POST "https://open.dieyuyun.com/v1/messages" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk-xxx" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "system": "You are a professional Python developer. Keep answers concise.",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "What are Python decorators? Give an example."}
    ]
  }'
python
import anthropic

client = anthropic.Anthropic(
    base_url="https://open.dieyuyun.com",
    api_key="sk-xxx"
)

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    system="You are a professional Python developer. Keep answers concise.",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "What are Python decorators? Give an example."}
    ]
)

print(message.content[0].text)
javascript
import Anthropic from '@anthropic-ai/sdk'

const client = new Anthropic({
  baseURL: 'https://open.dieyuyun.com',
  apiKey: 'sk-xxx',
})

const message = await client.messages.create({
  model: 'claude-sonnet-4-20250514',
  system: 'You are a professional Python developer. Keep answers concise.',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'What are Python decorators? Give an example.' }],
})

console.log(message.content[0].text)

Streaming Output ​

python
import anthropic

client = anthropic.Anthropic(
    base_url="https://open.dieyuyun.com",
    api_key="sk-xxx"
)

with client.messages.stream(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Write a quicksort algorithm"}
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Tool Calling (Function Calling) ​

json
{
  "model": "claude-sonnet-4-20250514",
  "max_tokens": 1024,
  "messages": [{ "role": "user", "content": "What's the weather like in Beijing today?" }],
  "tools": [
    {
      "name": "get_weather",
      "description": "Get weather information for a city",
      "input_schema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "City name"
          }
        },
        "required": ["city"]
      }
    }
  ]
}

Response Format ​

Successful Response ​

json
{
  "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hello! I'm Claude, an AI assistant developed by Anthropic. I'm happy to help you."
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 12,
    "output_tokens": 32
  }
}

Field Reference ​

FieldDescription
idUnique message identifier
typeAlways message
roleAlways assistant
contentArray of response blocks, may include text and tool_use types
modelActual model ID used
stop_reasonStop reason: end_turn, max_tokens, tool_use, stop_sequence
usage.input_tokensNumber of input tokens
usage.output_tokensNumber of output tokens

Streaming SSE Events ​

Streaming output returns the native Claude SSE event stream:

event: message_start
data: {"type":"message_start","message":{"id":"msg_01...","type":"message",...}}

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":"! I'm"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":32}}

event: message_stop
data: {"type":"message_stop"}

Error Response ​

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: field required"
  }
}

See Error Codes for details.

Compatibility ​

FeatureWuliang AIAnthropic Native API
Messages protocolFully compatibleNative protocol
System promptSeparate system parameterSeparate system parameter
Multimodal (images)Supports base64Supports base64 / URL
Tool callingPass-through supportNative support
Streaming SSENative Claude event streamNative protocol
Extended ThinkingPass-through supportNative support
Authenticationx-api-keyx-api-key
anthropic-versionRequiredRequired

TIP

The platform maintains full compatibility with the Anthropic Messages API. Successful responses return the native Claude format directly, without additional code / data wrappers. You can integrate using the Anthropic SDK by simply changing the base_url.

Best Practices ​

  • Always set max_tokens: Unlike the OpenAI protocol, the Anthropic Messages API requires the max_tokens parameter.
  • Use the system parameter: Claude's system prompt is a separate parameter -- do not place it in messages.
  • Claude Code support: This platform supports direct Claude Code connections. Simply configure the base_url.
  • Token counting differences: Anthropic's tokenization may differ from OpenAI's, so the same text may produce different token counts.
  • Tool calling syntax: Claude tools use input_schema (not OpenAI's parameters). Be aware of the field name difference.

Rate Limits ​

See Rate Limits for details.