# Опис полів Request Body

Опис полів верхнього рівня 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. **Інформація про середовище** (OS, 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 та визначення tools), навіть якщо запит явно не містить позначки `cache_control`. Тому не дивуйтесь, коли не бачите цей атрибут у request body — сервер уже виконав операцію кешування за лаштунками, просто не розкриває цю інформацію клієнту. Це негласна домовленість між Claude Code та Anthropic API.
