Skip to content

Anthropic Messages API

POST https://api.bve.me/v1/messages
GET https://api.bve.me/v1/messages/:message_id

Requires Authorization: Bearer sk-bve-YOUR_KEY.

BVE Gateway natively passes through the Anthropic Messages API. The response is in Anthropic format (not OpenAI format). This is useful when you want to use Anthropic-specific features like extended thinking or when targeting Claude models directly.

{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Hello, Claude!" }
]
}
FieldTypeRequiredDescription
modelstringYesClaude model ID (e.g. claude-sonnet-4-6)
messagesarrayYesArray of {role, content} objects
max_tokensintegerYesMaximum tokens to generate
systemstringNoSystem prompt
temperaturenumberNoSampling temperature 0–1
top_pnumberNoNucleus sampling
top_kintegerNoTop-k sampling
streambooleanNoEnable SSE streaming
stop_sequencesarrayNoStop sequences
toolsarrayNoTool definitions
tool_choiceobjectNoTool selection strategy
thinkingobjectNoExtended thinking configuration
metadataobjectNoRequest metadata
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! How can I help you today?"
}
],
"model": "claude-sonnet-4-6-20250929",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 10,
"output_tokens": 12
}
}
Terminal window
curl https://api.bve.me/v1/messages \
-H "Authorization: Bearer sk-bve-YOUR_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Hello, Claude!" }
]
}'
Terminal window
curl https://api.bve.me/v1/messages \
-H "Authorization: Bearer sk-bve-YOUR_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "Count to 5." }],
"stream": true
}'

Streaming returns Anthropic SSE events: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop.

import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: 'sk-bve-YOUR_KEY',
baseURL: 'https://api.bve.me/v1',
});
const message = await client.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello, Claude!' }],
});
console.log(message.content[0].text);
ModelID
Claude Sonnet 4.6claude-sonnet-4-6
Claude Sonnet 4.5claude-sonnet-4-5
Claude Sonnet 4claude-sonnet-4
Claude Haiku 4.5claude-haiku-4-5
Claude Haiku 4claude-haiku-4
Claude 3.7 Sonnetclaude-3-7-sonnet
Claude 3.5 Sonnetclaude-3-5-sonnet
Claude 3.5 Haikuclaude-3-5-haiku

See the Models page for the full list.

  • The anthropic-version header is optional but recommended.
  • The x-api-key header is NOT required — authentication uses the BVE Gateway Authorization: Bearer sk-bve-YOUR_KEY header only.
  • The request-id response header is passed through from the Anthropic upstream.
  • Extended thinking ("thinking": {"type": "enabled", "budget_tokens": N}) is forwarded if the model supports it.