От OpenClaw нужны ровно две вещи: адрес шлюза
https://speshu.ai/api/v1 и API-ключ в заголовке Authorization: Bearer. Эндпоинт /api/v1/chat/completions совместим с OpenAI Chat Completions, поэтому код и промпты трогать не нужно. Ключ создаётся на speshu.ai/profile, подробности — в разделе Аутентификация.Ключ и идентификатор модели
1
Положите ключ в переменную окружения
cURL
2
Проверьте ключ запросом баланса
Запрос баланса бесплатный и не обращается к моделям:Ответ
cURL
401 invalid_api_key означает, что ключ недействителен или отозван, — разбираться нужно в профиле, а не в конфиге OpenClaw.3
Возьмите идентификаторы моделей из каталога
Идентификаторы текстовых моделей не зашивайте ни в конфиг, ни в чат: состав каталога меняется, и зашитый в конфиг идентификатор начинает падать с Сохраните каталог в файл — из него ниже собирается конфигурация:Формат ответа и параметры выбора — в разделе Модели и цены.
404 model_not_found без предупреждения. Заберите список один раз и используйте его целиком:cURL
cURL
Конфигурация
OpenClaw читает конфигурацию из JSON-файла в своём каталоге данных:~/.openclaw/openclaw.json в Linux и macOS, %USERPROFILE%\.openclaw\openclaw.json в Windows. Провайдеры моделей описаны в секции models.providers — каждый записью с адресом шлюза, ключом, типом API и списком моделей.
Добавьте блок в models.providers:
Собрать конфигурацию из каталога
Вписывать модели руками не нужно — сгенерируйте блок из сохранённого каталога. Скрипт добавляет провайдераspeshu, не трогая остальные ключи файла:
cURL
${SPESHU_API_KEY} остаётся в файле как есть — gateway подставит значение при запуске. Если ваша версия не подставляет переменные окружения, замените её на значение ключа и обязательно ограничьте права на файл командой chmod 600.
Модель по умолчанию
В секцииagents.defaults.model укажите модель, которой gateway будет отвечать по умолчанию. Ссылка строится как <имя-провайдера>/<идентификатор модели> — с идентификатором из каталога как есть, вместе со слэшем в группе:
/model с полной ссылкой в кавычках — идентификаторы содержат слэш, и без кавычек команда разберётся неверно:
agents.defaults.models, где ключ — полная ссылка на модель:
Проверьте, что всё работает
Проверьте ключ и модель напрямую, минуя gateway:cURL
agents.defaults.model.primary.
usage.cost.total_cost — сумма, списанная с кошелька в рублях. Это единственное поле, по которому стоит считать расход. Подробности — в разделе Тарификация и оплата.Что ещё доступно
Потоковая передача
Gateway читает/chat/completions как OpenAI-совместимый поток, поэтому сообщения в канале печатаются по мере генерации. Формат кадров SSE, маркер [DONE] и кадр со списанием разобраны в гайде Потоковая передача.
Инструменты
Описание инструментов уходит в полеtools запроса, а выбранный инструмент возвращается в choices[0].message.tool_calls — тот же протокол, что и в обычном чате. Полный цикл вызова, разбор аргументов и обработка параллельных вызовов — в гайде Вызов функций.
Изображения во входе
Чтобы отдать модели скриншот или фото из переписки, передайте его публичной ссылкой в блокеimage_url. Требования к ссылке и все четыре типа блоков контента — в гайде Медиаввод.
Генерация медиа
Медиа-API не OpenAI-совместимый, поэтому генерация изображений, видео и музыки не идёт через провайдера моделей. Задачи создаются отдельным вызовомPOST /api/v1/async/media/tasks и опрашиваются до state: "success". Идентификаторы медиа-моделей, в отличие от текстовых, стабильны — берите их из GET /api/v1/media/models. Формат конверта, Idempotency-Key и скачивание файла — в разделе Создать задачу.
Типичные проблемы
404 на запросе, хотя ключ и модель верны
404 на запросе, хотя ключ и модель верны
Проверьте
baseUrl: должно быть ровно https://speshu.ai/api/v1 — без потерянного /v1 и без завершающего слэша. Обе ошибки дают одинаковый 404 при верном ключе. Подробнее — в разделе Введение в API.401 invalid_api_key в gateway, но не в curl
401 invalid_api_key в gateway, но не в curl
Ключ не подставился: строка
${SPESHU_API_KEY} осталась в файле как есть, а переменная окружения не экспортирована в процесс gateway. Gateway запускают как демон или systemd-юнит — у него своё окружение. Проверьте командой curl https://speshu.ai/api/v1/balance -H "Authorization: Bearer $SPESHU_API_KEY".404 model_not_found
404 model_not_found
Идентификатор в
models.providers.speshu.models устарел или скопирован с ошибкой. Пересоберите список из GET /api/v1/models скриптом выше: вручную скопированный каталог устаревает молча, и список в чате продолжает показывать пропавшие модели.Модели нет в списке, хотя она есть в каталоге
Модели нет в списке, хотя она есть в каталоге
models.providers — allowlist: модель вне списка не предлагается в интерфейсе и не принимается по ссылке speshu/<идентификатор>. Добавьте её в список и перезапустите gateway.Ответ приходит целиком, а не по частям
Ответ приходит целиком, а не по частям
Проверьте, что в конфигурации не отключён поток для канала. Формат кадров SSE и
[DONE] — в гайде Потоковая передача.Что дальше
Начало работы
Полный маршрут от ключа до медиа-задачи
Модели и цены
Как выбрать идентификатор и на что смотреть
Вызов функций
Полный цикл вызова инструмента
Запрос чату
Поля запроса и формат ответа
