Введение
Совместимый с OpenAI чат-эндпоинт для Grok 4.6 от xAI, в котором снимок экрана и вопрос о нём приходят одной репликой.
Grok 4.6 сделан в xAI и отвечает по адресу POST https://api.spicyapi.ai/v1/chat/completions под именем модели xai/grok-4.6. Форма запроса привычная: массив messages не более чем из 256 упорядоченных реплик, предел вывода, два параметра сэмплирования, список инструментов, формат ответа и reasoning_effort — сколько модель думает, прежде чем писать. Окно вмещает 500 000 токенов, а один ответ может занять 450 000 из них, так что большая часть бюджета приходится на сторону ответа, а не на сторону промпта. Содержимое принимает части text и image_url; частей с файлом или PDF на этом эндпоинте нет, а модальность такая: текст и изображения на входе, текст на выходе.
Ключевые возможности и особенности
Картинка и фраза о ней — в одной реплике
Содержимое может быть простой строкой или массивом частей, а часть с изображением несёт url и подсказку detail со значением auto, low или high. Снимок и вопрос о нём приходят вместе, поэтому модель читает пиксели, а не ваше описание пикселей, — и в этом вся разница, когда ответ держится на неверно подписанной оси, на обрезанной у края трассе вызовов или на вёрстке, которая ломается ровно на одной ширине. Содержимое изображений считается внутри окна на 500 000 токенов, а не рядом с ним, поэтому несколько крупных снимков и длинная история переписки делят один бюджет.
Почти весь бюджет можно отдать ответу
Один ответ доходит до 450 000 токенов — необычная форма для чат-модели: большую часть окна можно потратить на письмо, а не на чтение. max_tokens по умолчанию по-прежнему 4 096, поэтому длинную генерацию запрашивают намеренно, а не попадают в неё случайно, и обрезка на значении по умолчанию происходит без предупреждения. reasoning_effort принимает значения low, medium, high или xhigh, по умолчанию high; усилие оплачивается выходными токенами, а значит расходует и ваш предел, и ваш счёт одновременно.
На пути нет ничего нашего
Между вами и этой моделью мы не ставим собственный классификатор содержимого. То, что она отказывается писать, — её собственное поведение, а не вставленный здесь слой; отправленное вами по дороге не просматривают, не оценивают и не переписывают. Права на отправленный материал остаются у вас, и вы же отвечаете за то, как используется ответ.
Параметры запроса
| Параметр | Обязательно | Описание |
|---|---|---|
messages | Да | Не более 256 реплик. Содержимое может смешивать части text и |
reasoning_effort | Нет | low, medium, high или xhigh; по умолчанию high. Токены рассуждения оплачиваются как выходные. |
max_tokens | Нет | Ограничивает видимый ответ 450 000 токенов; значение по умолчанию 4 096 молча обрезает длинный ответ. |
temperature | Нет | От 0 до 2, по умолчанию 0,7. Ставьте 0, когда сравниваете два макета или два запуска. |
top_p | Нет | От 0,01 до 1. Меняйте либо его, либо temperature, но не оба сразу. |
tools | Нет | До 128 описаний функций на запрос. Не более 128 элементов |
parallel_tool_calls | Нет | true или false, по умолчанию true: модель может запросить несколько вызовов инструментов за один ход. По умолчанию: |
tool_choice | Нет | auto, none, required или объект с именем вызываемой функции. |
response_format | Нет | Запрашивайте объект JSON, если ответ будет читать код, а не человек. |
Стоимость
Ввод $2 / Вывод $6 за 1 млн токенов; Запросы от 200K токенов: Ввод $4 / Вывод $12
Общий ввод включает кэшированные токены. Начиная с 200 000 входных токенов, ставки длинного контекста применяются ко всему вводу, кэшированному вводу и выводу запроса; для запросов меньше этого порога действуют стандартные ставки. Вывод включает токены рассуждения. Перед отправкой проверьте бюджет запроса. Первоначальное удержание средств рассчитывается без учёта экономии на кэше, а при итоговом расчёте разница возвращается по фактическому использованию.
Сценарии использования
Разобрать снимок вместо того, чтобы его описывать
Отправьте снимок с detail high рядом с вопросом в одном пользовательском сообщении — и модель работает по пикселям: неверная подпись оси, пропавшая строка, обрезанный у края кадр. Два снимка с разницей в час в одной реплике позволяют спросить, какое число сдвинулось, вместо вопроса о сводке, набранной вручную.
Написать текст объёмом с книгу за один вызов
Поднимите max_tokens ближе к 450 000 — и руководство по миграции, длинный отчёт или целый набор тестов вернётся одним ответом, а не цепочкой продолжений, каждое из которых теряет кусочек нити. С stream: true текст приходит, пока его ещё пишут.
Сохранить читаемость цикла с инструментами
Объявите до 128 описаний функций, соедините их с tool_choice и возвращайте каждый результат следующей репликой с ролью tool. Зафиксируйте reasoning_effort на весь цикл — и между итерациями будет меняться только разговор, а это и делает трассу пригодной для чтения, когда цикл идёт не туда.
Отдать ответ коду, а не человеку
Запросите объект JSON через response_format и опустите temperature до 0 — ответ вернётся структурой, которую ваш парсер возьмёт как есть. Добавьте к этому часть с изображением, и вы получите извлечение прямо из чека, графика или снимка формы, без промежуточного шага с перепечатыванием.
Руководство по промптам и практические советы
Кладите изображение туда же, где вопрос
Держите часть text и части image_url в одном пользовательском сообщении, а не отправляйте сначала картинку, а потом вопрос. Скажите, что именно нужно из неё вычитать: число, расхождение или вердикт, — и назовите панель, если их несколько. Значение high у detail покупает разрешение, а не внимание.
POST https://api.spicyapi.ai/v1/chat/completions
{
"model": "xai/grok-4.6",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "These two captures are an hour apart on the same dashboard. Which metric regressed, and what in the second image explains it?"},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/c681580c3c6a0b63.jpeg", "detail": "high"}},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/59f0bc6291069978.jpeg", "detail": "high"}}
]
}
],
"reasoning_effort": "high",
"max_tokens": 4000
}
Тратьте усилие там, где оно меняет ответ
reasoning_effort по умолчанию стоит на high, так что, пропустив это поле, вы уже платите за более осторожную настройку и за выходные токены, которые к ней прилагаются. Приберегите xhigh для работы, которая должна быть верной с первого раза, берите medium для обычной вычитки и опускайтесь до low на коротких механических репликах. Токены рассуждения оплачиваются как выходные и делят предел с самим ответом, поэтому щедрый предел на xhigh — большой запрос в обоих смыслах.
Посмотрите, в какую ступень попадает запрос
Ввод и кэшированный ввод суммируются, и начиная с 200 000 токенов весь запрос тарифицируется по ступени длинного контекста, а не только часть выше порога. Поэтому сокращение истории с 210 000 токенов до 190 000 меняет больше, чем стоимость убранных токенов. Сумма, удержанная перед вызовом, рассчитывается без всякой экономии на кэше, а при итоговом расчёте разница возвращается по измеренному расходу: число, которое вы видите заранее, — это потолок, а не цена.
Быстрый старт API
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "xai/grok-4.6/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
Аутентификация, полная схема, опрос статуса и обработка ошибок описаны в справочнике API.










