# Описание полей Request Body

Описание полей верхнего уровня тела запроса Claude API `/v1/messages`.

## Список полей

| Поле | Тип | Описание |
|------|------|------|
| **model** | string | Название используемой модели, например `claude-opus-4-6`, `claude-sonnet-4-6` |
| **messages** | array | История сообщений диалога. Каждое сообщение содержит `role` (user/assistant) и `content` (массив блоков: текст, изображения, tool_use, tool_result и др.) |
| **system** | array | System prompt. Содержит основные инструкции Claude Code, описание использования инструментов, информацию об окружении, содержимое CLAUDE.md и т.д. Блоки с `cache_control` кэшируются через prompt caching |
| **tools** | array | Список определений доступных инструментов. Каждый инструмент содержит `name`, `description` и `input_schema` (JSON Schema). MainAgent обычно имеет более 20 инструментов, SubAgent — лишь несколько |
| **metadata** | object | Метаданные запроса, обычно содержащие `user_id` для идентификации пользователя |
| **max_tokens** | number | Максимальное количество токенов в одном ответе модели, например `16000`, `64000` |
| **thinking** | object | Конфигурация расширенного мышления. `type: "enabled"` включает режим мышления, `budget_tokens` управляет верхним пределом токенов мышления |
| **context_management** | object | Конфигурация управления контекстом. `truncation: "auto"` позволяет Claude Code автоматически усекать слишком длинную историю сообщений |
| **output_config** | object | Конфигурация вывода, например настройка `format` |
| **stream** | boolean | Включить ли потоковый ответ. Claude Code всегда использует `true` |

## Структура messages

`content` каждого сообщения — это массив блоков, распространённые типы:

- **text**: обычное текстовое содержимое
- **tool_use**: вызов инструмента моделью (содержит `name`, `input`)
- **tool_result**: результат выполнения инструмента (содержит `tool_use_id`, `content`)
- **image**: изображение (base64 или URL)
- **thinking**: процесс мышления модели (режим расширенного мышления)

## Структура system

Массив system prompt обычно содержит:

1. **Основные инструкции агента** ("You are Claude Code...")
2. **Правила использования инструментов**
3. **Содержимое CLAUDE.md** (инструкции на уровне проекта)
4. **Подсказки навыков** (skills reminder)
5. **Информация об окружении** (ОС, shell, статус git и т.д.) — фактически Claude Code сильно зависит от git. Если в проекте есть git-репозиторий, Claude Code демонстрирует лучшее понимание проекта, включая возможность извлекать удалённые изменения и историю коммитов для вспомогательного анализа

Блоки, помеченные `cache_control: { type: "ephemeral" }`, кэшируются Anthropic API на 5 минут; при попадании в кэш тарификация идёт по `cache_read_input_tokens` (значительно дешевле, чем `input_tokens`).

> **Примечание**: для таких специальных клиентов, как Claude Code, серверная сторона Anthropic фактически не полностью полагается на атрибут `cache_control` в запросе для определения поведения кэширования. Сервер автоматически применяет политику кэширования к определённым полям (таким как system prompt, определения инструментов), даже если запрос не содержит явной метки `cache_control`. Поэтому, если вы не видите этот атрибут в теле запроса, не стоит удивляться — сервер уже выполнил кэширование за кулисами, просто не раскрывая эту информацию клиенту. Это своего рода негласное соглашение между Claude Code и Anthropic API.
