Messages API

Send requests using the Anthropic Messages API format for Claude models

The Messages API (/v1/messages) provides direct compatibility with the Anthropic Messages API format. Use this endpoint when working with Anthropic Claude models and features like interleaved thinking, tool calling, and multi-turn conversations.

The Messages API (/v1/messages) is fully supported on the Enterprise plan using https://enterprise.blackbox.ai. On standard plans (https://api.blackbox.ai), this endpoint may not work as expected. For the best experience, use an Enterprise API key.

Basic Request

import os
import requests

response = requests.post(
    'https://enterprise.blackbox.ai/v1/messages',
    headers={
        'Content-Type': 'application/json',
        'Authorization': f"Bearer {os.environ['BLACKBOX_API_KEY']}",
        'anthropic-version': '2023-06-01',
    },
    json={
        'model': 'blackboxai/anthropic/claude-sonnet-4.5',
        'max_tokens': 1024,
        'messages': [
            {'role': 'user', 'content': 'What is the capital of France?'}
        ],
    },
)

result = response.json()
print(result['content'][0]['text'])
const response = await fetch("https://enterprise.blackbox.ai/v1/messages", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
    "anthropic-version": "2023-06-01"
  },
  body: JSON.stringify({
    model: "blackboxai/anthropic/claude-sonnet-4.5",
    max_tokens: 1024,
    messages: [
      { role: "user", content: "What is the capital of France?" }
    ]
  })
});

const result = await response.json();
console.log(result.content[0].text);
curl https://enterprise.blackbox.ai/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "blackboxai/anthropic/claude-sonnet-4.5",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "What is the capital of France?"}
    ]
  }'

Response Format

{
  "id": "gen_01KJRNETDECKXVWK0YX46WSHDY",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "The capital of France is Paris."
    }
  ],
  "model": "blackboxai/anthropic/claude-sonnet-4.5",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 19,
    "output_tokens": 10,
    "total_tokens": 29,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0
  }
}

System Prompt

Use the system parameter to set the model's behavior for the entire conversation.

import os
import requests

response = requests.post(
    'https://enterprise.blackbox.ai/v1/messages',
    headers={
        'Content-Type': 'application/json',
        'Authorization': f"Bearer {os.environ['BLACKBOX_API_KEY']}",
        'anthropic-version': '2023-06-01',
    },
    json={
        'model': 'blackboxai/anthropic/claude-sonnet-4.5',
        'max_tokens': 256,
        'system': 'You are a helpful pirate. Always respond in pirate speak.',
        'messages': [
            {'role': 'user', 'content': 'What is 2 + 2?'}
        ],
    },
)

result = response.json()
print(result['content'][0]['text'])
const response = await fetch("https://enterprise.blackbox.ai/v1/messages", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
    "anthropic-version": "2023-06-01"
  },
  body: JSON.stringify({
    model: "blackboxai/anthropic/claude-sonnet-4.5",
    max_tokens: 256,
    system: "You are a helpful pirate. Always respond in pirate speak.",
    messages: [
      { role: "user", content: "What is 2 + 2?" }
    ]
  })
});

const result = await response.json();
console.log(result.content[0].text);
curl https://enterprise.blackbox.ai/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "blackboxai/anthropic/claude-sonnet-4.5",
    "max_tokens": 256,
    "system": "You are a helpful pirate. Always respond in pirate speak.",
    "messages": [
      {"role": "user", "content": "What is 2 + 2?"}
    ]
  }'
{
  "id": "gen_01KJRNEX4M6JD4GDPF4K5MK2J0",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Arrr, that be an easy bit o' mathematics, matey! 2 + 2 equals 4, as sure as the seven seas be salty!"
    }
  ],
  "model": "blackboxai/anthropic/claude-sonnet-4.5",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 30,
    "output_tokens": 60
  }
}

Multi-Turn Conversations

Pass previous messages as an array of alternating user and assistant messages to maintain conversation context.

import os
import requests

response = requests.post(
    'https://enterprise.blackbox.ai/v1/messages',
    headers={
        'Content-Type': 'application/json',
        'Authorization': f"Bearer {os.environ['BLACKBOX_API_KEY']}",
        'anthropic-version': '2023-06-01',
    },
    json={
        'model': 'blackboxai/anthropic/claude-sonnet-4.5',
        'max_tokens': 256,
        'messages': [
            {'role': 'user', 'content': 'My name is Alice.'},
            {'role': 'assistant', 'content': 'Nice to meet you, Alice! How can I help you today?'},
            {'role': 'user', 'content': "What's my name?"},
        ],
    },
)

result = response.json()
print(result['content'][0]['text'])
const response = await fetch("https://enterprise.blackbox.ai/v1/messages", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
    "anthropic-version": "2023-06-01"
  },
  body: JSON.stringify({
    model: "blackboxai/anthropic/claude-sonnet-4.5",
    max_tokens: 256,
    messages: [
      { role: "user", content: "My name is Alice." },
      { role: "assistant", content: "Nice to meet you, Alice! How can I help you today?" },
      { role: "user", content: "What's my name?" }
    ]
  })
});

const result = await response.json();
console.log(result.content[0].text);
curl https://enterprise.blackbox.ai/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "blackboxai/anthropic/claude-sonnet-4.5",
    "max_tokens": 256,
    "messages": [
      {"role": "user", "content": "My name is Alice."},
      {"role": "assistant", "content": "Nice to meet you, Alice! How can I help you today?"},
      {"role": "user", "content": "What is my name?"}
    ]
  }'
{
  "id": "gen_01KJRNF1RP8DWKJ3M59JDAQRHX",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Your name is Alice, as you just told me."
    }
  ],
  "model": "blackboxai/anthropic/claude-sonnet-4.5",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 37,
    "output_tokens": 14
  }
}

Request Headers

Authorizationstringrequired

API Key in the format Bearer <api_key>. Get yours from here.

anthropic-versionstringrequired

Anthropic API version. Use 2023-06-01.

anthropic-betastring

Optional beta features. For example, interleaved-thinking-2025-05-14 for legacy interleaved thinking support.

Request Parameters

modelstringrequired

The model ID. Supported models include:

  • blackboxai/anthropic/claude-opus-4.8
  • blackboxai/anthropic/claude-opus-4.7
  • blackboxai/anthropic/claude-opus-4.6
  • blackboxai/anthropic/claude-opus-4.5
  • blackboxai/anthropic/claude-sonnet-4.6
  • blackboxai/anthropic/claude-sonnet-4.5
max_tokensintegerrequired

Maximum number of tokens to generate.

messagesarrayrequired

Array of message objects with role (user or assistant) and content fields.

systemstring

System prompt for the conversation.

toolsarray

Array of tool definitions using the Anthropic input_schema format. See Tool Calling.

thinkingobject

Configuration for extended / interleaved thinking. See Interleaved Thinking.

Response Fields

idstring

Unique message identifier.

typestring

Always "message".

rolestring

Always "assistant".

contentarray

Array of content blocks. Each block has a type field:

  • text — Text response with a text field
  • tool_use — Tool call with id, name, and input fields
  • thinking — Thinking block with a thinking field (when thinking is enabled)
stop_reasonstring

Why the model stopped generating:

  • end_turn — Natural completion
  • tool_use — Model wants to call a tool
  • max_tokens — Hit the token limit
usageobject

Token usage with input_tokens and output_tokens.

Supported Models

Model Model ID Tool Calling Interleaved Thinking
Claude Opus 4.6 blackboxai/anthropic/claude-opus-4.6
Claude Opus 4.5 blackboxai/anthropic/claude-opus-4.5
Claude Sonnet 4.6 blackboxai/anthropic/claude-sonnet-4.6
Claude Sonnet 4.5 blackboxai/anthropic/claude-sonnet-4.5