Overview
Creates messages by using the Anthropic Messages API. This API uses the dedicated /api/anthropic/v1/messages endpoint and supports multi-turn conversations and streaming responses.
API details
Constraints
- You must have an API key. For more information, see Manage AI API keys.
Request path
POST https://ai-api-g.oceanbase.com/api/anthropic/v1/messages
Request header
Name |
Required |
Example value |
Description |
|---|---|---|---|
| x-api-key | Yes | YOUR_API_KEY | Authentication information |
| anthropic-version | No | 2023-06-01 | Anthropic API version |
| Content-Type | Yes | application/json | Request body format |
Request parameters
Path
None
Query
None
Body
Name |
Type |
Required |
Example value |
Description |
|---|---|---|---|---|
| model | string | Yes | claude-sonnet-4-6 | Model name. For supported models, see List Anthropic models. |
| max_tokens | integer | Yes | 1024 | Required by Anthropic. It is recommended to always pass this parameter explicitly. Different models have different maximum limits. |
| messages | array[object] | Yes | [{"role": "user", "content": "Hello"}] | Message list. Supports multi-turn conversations, with each message containing role and content |
| system | string or array[object] | No | "You are a helpful assistant" | System prompt, used to provide context and instructions |
messages
Each message contains the following fields:
Name |
Type |
Required |
Description |
|---|---|---|---|
| role | string | Yes | Role. Valid values: user and assistant. |
| content | string or array[object] | Yes | Message content. Can be a string or an array of content blocks |
Content block types:
- Text content:
{"type": "text", "text": "Message text"} - Image content:
{"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": "..."}} - Tool use:
{"type": "tool_use", "id": "...", "name": "...", "input": {...}} - Tool result:
{"type": "tool_result", "tool_use_id": "...", "content": "..."}
Response
Response parameters
Name |
Type |
Description |
|---|---|---|
| success | boolean | Whether the request was successful |
| code | string | Return code |
| message | string | Response message. |
| data | object | Response data. |
Request example
Basic text conversation
curl -sS -X POST "https://ai-api-g.oceanbase.com/api/anthropic/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}'
Multi-turn conversation
curl -sS -X POST "https://ai-api-g.oceanbase.com/api/anthropic/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "You are a helpful assistant",
"messages": [
{
"role": "user",
"content": "Hello there."
},
{
"role": "assistant",
"content": "Hi! How can I help you?"
},
{
"role": "user",
"content": "Can you explain LLMs in plain English?"
}
]
}'
Streaming response
curl -sS -X POST "https://ai-api-g.oceanbase.com/api/anthropic/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Write a short poem"
}
],
"stream": true
}'
Response example
Success response
{
"id": "msg_01XYZ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! How can I help you today?"
}
],
"model": "claude-sonnet-4-6",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 10,
"output_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}
Streaming response events
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01XYZ", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-6", "stop_reason": null, "usage": {"input_tokens": 10, "output_tokens": 0}}}
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"}, "usage": {"output_tokens": 8}}
event: message_stop
data: {"type": "message_stop"}
Error response
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "messages: field required"
}
}
