Перейти к основному содержанию
POST
/
v1
/
messages
curl https://api.apimart.ai/v1/messages \
  -H "x-api-key: $API_KEY" \
  -H "anthropic-version: 2025-10-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, world"}
    ]
  }'
{
  "code": 200,
  "data": {
    "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "Hello! I'm Claude. Nice to meet you."
      }
    ],
    "model": "claude-sonnet-4-5-20250929",
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
      "input_tokens": 12,
      "output_tokens": 18
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt

Use this file to discover all available pages before exploring further.

curl https://api.apimart.ai/v1/messages \
  -H "x-api-key: $API_KEY" \
  -H "anthropic-version: 2025-10-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, world"}
    ]
  }'
{
  "code": 200,
  "data": {
    "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "Hello! I'm Claude. Nice to meet you."
      }
    ],
    "model": "claude-sonnet-4-5-20250929",
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
      "input_tokens": 12,
      "output_tokens": 18
    }
  }
}

Авторизация

x-api-key
string
обязательно
API-ключ для аутентификацииОткройте страницу управления API-ключами, чтобы получить ваш API-ключДобавьте в заголовок запроса:
x-api-key: YOUR_API_KEY
anthropic-version
string
обязательно
Версия APIУказывает версию Claude API, которую нужно использоватьПример: 2025-10-01

Body

model
string
по умолчанию:"claude-haiku-4-5-20251001"
обязательно
Название модели
  • claude-haiku-4-5-20251001 — Claude 4.5, версия с быстрым откликом
  • claude-sonnet-4-5-20250929 — Claude 4.5, сбалансированная версия
  • claude-opus-4-1-20250805 — самая мощная флагманская модель Claude 4.1
  • claude-opus-4-1-20250805-thinking — Claude 4.1 Opus, версия с глубоким мышлением
  • claude-sonnet-4-5-20250929-thinking — Claude 4.5 Sonnet, версия с глубоким мышлением
messages
array
обязательно
Список сообщенийМассив сообщений, на основе которых модель сгенерирует следующий ответ. Каждое сообщение содержит поля role и content.💡 Быстрое заполнение (область «Try it»):
  1. Нажмите «+ Add an item», чтобы добавить сообщение
  2. В поле role введите: user (сообщение пользователя) или assistant (ответ AI, для многошагового диалога)
  3. В поле content введите текст вашего сообщения
Одиночное сообщение пользователя:
[{"role": "user", "content": "Hello, Claude"}]
Многошаговый диалог:
[
  {"role": "user", "content": "Hello there."},
  {"role": "assistant", "content": "Hi, I'm Claude. How can I help you?"},
  {"role": "user", "content": "Can you explain LLMs in plain English?"}
]
Предзаполненный ответ assistant:
[
  {"role": "user", "content": "What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun"},
  {"role": "assistant", "content": "The best answer is ("}
]
max_tokens
integer
Максимальное количество генерируемых токеновМаксимальное количество токенов до остановки. Модель может остановиться до достижения этого лимита.У разных моделей разные максимальные значения. Минимум: 1
system
string | array
Системная подсказкаСистемные подсказки задают роль Claude, его характер, цели и инструкции.Строковый формат:
{
  "system": "You are a professional Python programming tutor"
}
Структурированный формат:
{
  "system": [
    {
      "type": "text",
      "text": "You are a professional Python programming tutor"
    }
  ]
}
temperature
number
Параметр температуры, диапазон 0–1Управляет случайностью вывода:
  • Низкие значения (например, 0.2): более детерминированный, консервативный
  • Высокие значения (например, 0.8): более случайный, креативный
По умолчанию: 1.0
top_p
number
Параметр ядровой выборки (nucleus sampling), диапазон 0–1Использует ядровую выборку. Рекомендуется использовать либо temperature, либо top_p, но не оба сразу.По умолчанию: 1.0
top_k
integer
Выборка Top-KВыборка только из верхних K вариантов, отсекает «длинный хвост» маловероятных ответов.Рекомендуется только для продвинутых сценариев.
stream
boolean
Включение стримингаПри значении true использует Server-Sent Events (SSE) для потоковой передачи ответов.По умолчанию: false
stop_sequences
array
Стоп-последовательностиПользовательские текстовые последовательности, при которых модель прекращает генерацию.Максимум 4 последовательности.Пример: ["\n\nHuman:", "\n\nAssistant:"]
metadata
object
МетаданныеОбъект метаданных для запроса.Включает:
  • user_id: идентификатор пользователя
tools
array
Определения инструментовСписок инструментов, которые модель может использовать для выполнения задач.Пример функционального инструмента:
{
  "tools": [
    {
      "name": "get_weather",
      "description": "Get the current weather in a given location",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": ["celsius", "fahrenheit"],
            "description": "Temperature unit"
          }
        },
        "required": ["location"]
      }
    }
  ]
}
Поддерживаемые типы инструментов:
  • Пользовательские функциональные инструменты
  • Инструмент работы с компьютером (computer_20241022)
  • Инструмент текстового редактора (text_editor_20241022)
  • Инструмент Bash (bash_20241022)
tool_choice
object
Стратегия выбора инструментаУправляет тем, как модель использует инструменты:
  • {"type": "auto"}: автоматическое решение (по умолчанию)
  • {"type": "any"}: обязательно использовать какой-либо инструмент
  • {"type": "tool", "name": "tool_name"}: использовать конкретный инструмент

Response

id
string
Уникальный идентификатор сообщенияПример: "msg_013Zva2CMHLNnXjNJJKqJ2EF"
type
string
Тип объектаВсегда "message"
role
string
РольВсегда "assistant"
content
array
Массив блоков содержимогоКонтент, сгенерированный моделью, в виде массива блоков содержимого.Текстовый контент:
[{"type": "text", "text": "Hello! I'm Claude."}]
Использование инструмента:
[
  {
    "type": "tool_use",
    "id": "toolu_01A09q90qw90lq917835lq9",
    "name": "get_weather",
    "input": {"location": "San Francisco, CA", "unit": "celsius"}
  }
]
Типы контента:
  • text: текстовый контент
  • tool_use: вызов инструмента
model
string
Модель, обработавшая запросПример: "claude-sonnet-4-5-20250929"
stop_reason
string
Причина остановкиВозможные значения:
  • end_turn: естественное завершение
  • max_tokens: достигнут лимит токенов
  • stop_sequence: встретилась стоп-последовательность
  • tool_use: вызван инструмент
stop_sequence
string | null
Сработавшая стоп-последовательностьСтоп-последовательность, которая была сгенерирована, если была; иначе null
usage
object
Статистика использования токенов

Примеры использования

Базовый диалог

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.apimart.ai"
)

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Explain quantum computing basics"}
    ]
)

print(message.content[0].text)

Многошаговый диалог

messages = [
    {"role": "user", "content": "What is machine learning?"},
    {"role": "assistant", "content": "Machine learning is a branch of AI..."},
    {"role": "user", "content": "Can you give a practical example?"}
]

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=messages
)

Использование системных подсказок

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    system="You are a senior Python developer expert in code review and optimization.",
    messages=[
        {"role": "user", "content": "How to optimize this code?\n\n[code]"}
    ]
)

Потоковый ответ

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

Использование инструментов

tools = [
    {
        "name": "get_stock_price",
        "description": "Get real-time stock price",
        "input_schema": {
            "type": "object",
            "properties": {
                "ticker": {
                    "type": "string",
                    "description": "Stock ticker symbol, e.g., AAPL"
                }
            },
            "required": ["ticker"]
        }
    }
]

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    tools=tools,
    messages=[
        {"role": "user", "content": "What's Tesla's stock price?"}
    ]
)

# Handle tool calls
if message.stop_reason == "tool_use":
    tool_use = next(block for block in message.content if block.type == "tool_use")
    print(f"Calling tool: {tool_use.name}")
    print(f"Arguments: {tool_use.input}")

Понимание изображений

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/image.jpg"
                    }
                },
                {
                    "type": "text",
                    "text": "Describe this image"
                }
            ]
        }
    ]
)

Изображение в формате Base64

import base64

with open("image.jpg", "rb") as image_file:
    image_data = base64.b64encode(image_file.read()).decode("utf-8")

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "Analyze this image"
                }
            ]
        }
    ]
)

Лучшие практики

1. Промпт-инжиниринг

Чёткое определение роли:
system = """You are an experienced data scientist specializing in:
- Statistical analysis and data visualization
- Machine learning model development
- Python and R programming
Provide professional, accurate advice."""
Структурированный вывод:
message = "Please return the analysis results in JSON format with summary, key_findings, and recommendations fields."

2. Обработка ошибок

from anthropic import APIError, RateLimitError

try:
    message = client.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=1024,
        messages=[{"role": "user", "content": "Hello"}]
    )
except RateLimitError:
    print("Rate limit exceeded, please retry later")
except APIError as e:
    print(f"API error: {e}")

3. Оптимизация токенов

# Use shorter prompts
messages = [
    {"role": "user", "content": "Summarize key points:\n\n[long text]"}
]

# Limit output length
message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=500,  # Limit output
    messages=messages
)

4. Предзаполнение ответов

# Guide model to specific format
messages = [
    {"role": "user", "content": "List 5 Python best practices"},
    {"role": "assistant", "content": "Here are 5 Python best practices:\n\n1."}
]

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=messages
)

Обработка потоковых ответов

Стриминг в Python

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.apimart.ai"
)

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

Стриминг в JavaScript

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: process.env.API_KEY,
  baseURL: 'https://api.apimart.ai'
});

const stream = await client.messages.stream({
  model: 'claude-sonnet-4-5-20250929',
  max_tokens: 1024,
  messages: [
    { role: 'user', content: 'Write a React component example' }
  ]
});

for await (const chunk of stream) {
  if (chunk.type === 'content_block_delta' && 
      chunk.delta.type === 'text_delta') {
    process.stdout.write(chunk.delta.text);
  }
}

Важные замечания

  1. Безопасность API-ключей:
    • Храните API-ключи в переменных окружения
    • Никогда не зашивайте ключи в исходный код
    • Регулярно ротируйте ключи
  2. Ограничение частоты запросов:
    • Учитывайте лимиты API
    • Реализуйте механизмы повтора
    • Используйте экспоненциальную задержку (exponential backoff)
  3. Управление токенами:
    • Отслеживайте расход токенов
    • Оптимизируйте длину промптов
    • Используйте подходящие значения max_tokens
  4. Выбор модели:
    • Opus: сложные задачи, требующие глубокого мышления
    • Sonnet: сбалансированная производительность и стоимость
    • Haiku: быстрый отклик, простые задачи
  5. Фильтрация контента:
    • Валидируйте пользовательский ввод
    • Фильтруйте конфиденциальную информацию
    • Реализуйте модерацию контента