Настройка API-ключа OpenCode AI — конфигурация, совместимая с OpenAI
Как настроить OpenCode AI с пользовательским API-ключом от APIMaster.ai. Добавьте APIMaster как совместимого с OpenAI провайдера в opencode.jsonc и получите доступ к Claude, GPT-5.5 и DeepSeek с вводом изображений (Vision) и опциональными уровнями Reasoning.
OpenCode Desktop — это графический клиент для OpenCode (сейчас в бета-версии): локальные сессии агентов, редактирование файлов и выполнение shell-команд. APIMaster.ai совместим с OpenAI — добавьте его через Настройки → Провайдеры → Пользовательский провайдер.
Сначала получите API-ключ. Используйте заглушку
your_apimaster_keyниже; на скриншотах ключи скрыты.
Предварительные требования
- OpenCode Desktop установлен с opencode.ai/download.
- Windows:
opencode-desktop-win-x64.exe - macOS:
brew install --cask opencode-desktopили.dmg - Linux:
.deb/.rpm/ AppImage
- Windows:
- API-ключ APIMaster из консоли.
Шаг 1 — Открыть Провайдеров
- Запустите OpenCode Desktop и откройте рабочее пространство.
- Нажмите на значок шестеренки (внизу слева).
- Выберите Провайдеры на боковой панели.
- Прокрутите до Пользовательский провайдер (Добавить провайдера, совместимого с OpenAI, по базовому URL).
- Нажмите + Подключить.

Шаг 2 — Форма пользовательского провайдера
| Поле | Значение |
|---|---|
| ID провайдера | apimaster |
| Отображаемое имя | APIMaster.ai |
| Базовый URL | https://apimaster.ai/v1 |
| API-ключ | Ваш ключ APIMaster |

Оставьте Заголовки пустыми, если вы не аутентифицируетесь только через заголовки.
Шаг 3 — Добавить модели и Отправить
На следующем экране сопоставьте модели (слева = метка в OpenCode, справа = id модели, отправляемый в APIMaster — обычно одинаковые):
| Слева | Справа |
|---|---|
gpt-5.4 |
gpt-5.4 |
claude-sonnet-4-6 |
claude-sonnet-4-6 |
- Нажмите + Добавить модель для добавления строк.
- Нажмите Отправить.

Выбирайте id из маркетплейса. Избегайте моделей только для генерации изображений (например, gpt-image-2) для чата с агентом.
Нужно распознавание изображений (Vision)?
gpt-5.5,claude-sonnet-4-6,claude-opus-4-7,claude-opus-4-8иclaude-haiku-4-5поддерживают ввод изображений, но OpenCode требует дополнительного объявления возможности — см. Включение ввода изображений для GPT и Claude.
Шаг 4 — Выбрать модель
- Начните или откройте сессию.
- Откройте выпадающий список моделей под полем ввода.
- В разделе APIMaster.ai выберите модель (например,
claude-sonnet-4-6).

Шаг 5 — Тест
Отправьте hello или небольшое задание по коду. Обычный ответ Ассистента (редактирование файлов / shell) означает, что APIMaster подключен.

Расширенная настройка: opencode.jsonc и Reasoning
Описанного выше интерфейса достаточно для быстрого старта. Чтобы настроить уровни Reasoning / усилия мышления (low, high, max, …) для одного и того же id модели, отредактируйте opencode.jsonc.
Расположение файла конфигурации
| ОС | Путь |
|---|---|
| macOS / Linux | ~/.config/opencode/opencode.jsonc |
| Windows | C:\Users\<имя_пользователя>\.config\opencode\opencode.jsonc |
Создайте файл, если его нет. Перезапустите OpenCode Desktop или начните новую сессию после сохранения.
API-ключ (не помещайте в jsonc)
Не храните ваш API-ключ в opencode.jsonc.
Используйте:
/connectв терминале, или- Настройки → Провайдеры → Подключить провайдера (как на Шагах 1–2 выше).
Храните секреты в хранилище аутентификации OpenCode; jsonc определяет только провайдера, модели и варианты Reasoning.
Провайдер APIMaster в jsonc
ID провайдера: apimaster. npm-пакет: @ai-sdk/openai-compatible.
baseURL должен быть:
https://apimaster.ai/v1
Не https://apimaster.ai/ — OpenCode добавляет /chat/completions. Без /v1 вы получите https://apimaster.ai/chat/completions → 404 Not Found.
Также не
https://api.apimaster.ai/v1— хост с префиксомapi.может вызывать сбои TLS / подключения при тестировании. Правильный хост —https://apimaster.ai/v1.
Полный пример с вариантами Reasoning — скачайте и замените конфиг OpenCode:
- Скачайте opencode.jsonc
- Замените (или сохраните как):
- macOS / Linux:
~/.config/opencode/opencode.jsonc - Windows:
C:\Users\<имя_пользователя>\.config\opencode\opencode.jsonc
- macOS / Linux:
- Настройте API-ключ через
/connectили интерфейс (никогда в jsonc). - Перезапустите OpenCode Desktop или начните новую сессию.
Сделайте резервную копию существующего файла перед заменой или объедините только блок
provider.apimaster.
Минимальная структура:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apimaster": {
"name": "APIMaster.ai",
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "https://apimaster.ai/v1" },
"models": {
"gpt-5.5": {
"name": "gpt-5.5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"high": { "reasoningEffort": "high" }
}
}
}
}
}
}
Поля
attachmentиmodalitiesуgpt-5.5выше включают ввод изображений (Vision) — см. Включение ввода изображений для GPT и Claude. Опустите их, если вам нужен только текстовый чат.
Принципы Reasoning
variants= несколько уровней Reasoning для одного id модели в интерфейсе.- Для API, совместимых с OpenAI, OpenCode преобразует
reasoningEffort→reasoning_effortв теле запроса. - Имена вариантов должны соответствовать фактическому параметру (
high→"reasoningEffort": "high"). - Каждая модель поддерживает разные уровни — настраивайте в соответствии с официальной документацией; скрытого переназначения нет.
Уровни Reasoning по моделям
| Модель | Варианты Reasoning | Примечания |
|---|---|---|
gpt-5.4 |
low, medium, high, xhigh |
GPT reasoning |
gpt-5.5 |
low, medium, high, xhigh |
GPT reasoning |
deepseek-v4-flash |
high, max |
DeepSeek thinking (рекомендуется) |
deepseek-v4-pro |
high, max |
DeepSeek thinking (рекомендуется) |
claude-sonnet-4-6 |
low, medium, high, max |
Claude Sonnet effort |
claude-opus-4-7 |
low, medium, high, xhigh, max |
Claude Opus effort |
claude-opus-4-8 |
low, medium, high, xhigh, max |
Claude Opus effort |
claude-haiku-4-5 |
нет | Нет неподтвержденных уровней effort |
minimax-m3 |
нет | Нет неподтвержденных уровней effort |
Полный файл см. в opencode.jsonc.
Переключение Reasoning в OpenCode
- Сохраните
opencode.jsonc, затем перезапустите или начните новую сессию. - Используйте выпадающий список модели / Reasoning (например,
gpt-5.4 / high). - Если поддерживается в вашей сборке:
Ctrl + Shift + Dциклически переключает уровни Reasoning.
Включение ввода изображений для GPT и Claude
Модели APIMaster.ai, такие как gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 и claude-haiku-4-5, поддерживают ввод изображений / Vision — чтение скриншотов, фотографий, диаграмм для распознавания, описания, OCR или программирования по изображению.
Поддержка изображений моделью ≠ отправка изображения OpenCode. Даже если сама модель APIMaster.ai поддерживает Vision, вы должны объявить эту возможность в
opencode.jsonc. Иначе OpenCode может не отправить изображение как мультимодальный ввод — он просто вставляет имя вложения / файла в промпт, и модель отвечает что-то вроде «текущая модель не поддерживает ввод изображений».
Два поля для объявления
Для каждой модели, которую вы хотите использовать с изображениями, добавьте:
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
attachment: trueсообщает OpenCode, что эта модель принимает вложения.modalities.input, содержащий"image", сообщает OpenCode, что эта модель поддерживает ввод изображений, поэтому OpenCode преобразует изображение в мультимодальный контентimage_url.
Полный пример (GPT и Claude)
Скачайте opencode.jsonc (поля уже включены) или объедините блок provider.apimaster ниже с вашей существующей конфигурацией:
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": [],
"provider": {
"apimaster": {
"name": "APIMaster.ai",
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://apimaster.ai/v1"
},
"models": {
"gpt-5.5": {
"name": "gpt-5.5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" }
}
},
"claude-sonnet-4-6": {
"name": "claude-sonnet-4-6",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"max": { "reasoningEffort": "max" }
}
},
"claude-opus-4-7": {
"name": "claude-opus-4-7",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" },
"max": { "reasoningEffort": "max" }
}
},
"claude-opus-4-8": {
"name": "claude-opus-4-8",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" },
"max": { "reasoningEffort": "max" }
}
},
"claude-haiku-4-5": {
"name": "claude-haiku-4-5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
}
}
}
}
}
Примечания:
- Чтобы включить ввод изображений только для
gpt-5.5, добавьтеattachmentиmodalitiesтолько кgpt-5.5; остальные оставьте без изменений. - Чтобы включить только Claude, добавьте эти поля только к моделям Claude.
- Сохраните существующие варианты Reasoning каждой модели (
low/medium/high/xhigh/max) — поля изображений и Reasoning не конфликтуют. - После редактирования
opencode.jsoncполностью закройте и перезапустите OpenCode или хотя бы начните новую сессию, чтобы конфигурация перезагрузилась. - Никогда не помещайте API-ключ в этот файл — настраивайте его через
/connectили интерфейс (см. Безопасность ниже).
Источник изображения: предпочтительна локальная загрузка / base64
- Рекомендуется: загружайте локальный PNG / JPG в OpenCode. В идеале OpenCode преобразует его в data URL base64 (
data:image/png;base64,...) перед отправкой в APIMaster — это проверенный рабочий путь. - Передача публичного URL изображения напрямую может не сработать. APIMaster / вышестоящий провайдер может не суметь скачать публичное изображение из-за сети, формата, размера, MIME или защиты от хотлинкинга, возвращая:
В этом случае используйте data URL base64 или локальную загрузку вместо того, чтобы полагаться на скачивание публичного URL со стороны модели.Error while downloading file. Upstream status code: 400.
Проверка работы распознавания изображений
Вариант A — Тест в OpenCode
- Переключитесь на
apimaster/gpt-5.5илиapimaster/claude-sonnet-4-6в выпадающем списке моделей. - Загрузите изображение PNG / JPG.
- Введите:
Describe the main content of this image.
- При правильной конфигурации модель должна описать содержимое изображения.
- Если модель упоминает только имя файла / вложения или отвечает «image input not supported», OpenCode, вероятно, не отправляет содержимое изображения — проверьте поля
attachmentиmodalitiesмодели и перезапустите OpenCode.
Вариант B — Тест напрямую через API
Полезно, чтобы отличить проблему модели APIMaster от проблемы адаптера OpenCode. Никогда не прописывайте реальный ключ жестко — используйте переменную окружения.
Linux / macOS:
export APIMASTER_API_KEY="your APIMaster API key"
curl https://apimaster.ai/v1/chat/completions \
-H "Authorization: Bearer $APIMASTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Describe this image." },
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,YOUR_IMAGE_BASE64"
}
}
]
}
],
"max_tokens": 1000
}'
Замените model на claude-sonnet-4-6, чтобы протестировать Claude тем же способом (проверено HTTP 200 с распознаванием изображений).
Windows PowerShell:
$env:APIMASTER_API_KEY = "your APIMaster API key"
# Convert a local image to base64, put it into image_url.url as data:image/png;base64,...
# Then call https://apimaster.ai/v1/chat/completions with the same JSON body.
Ответ 200 с описанием изображения означает, что ввод изображений работает на стороне APIMaster; если OpenCode все еще не работает, проблема в конфигурации
attachment/modalitiesOpenCode или в отсутствии перезапуска.
Устранение неполадок
Настройка через интерфейс
| Проблема | Решение |
|---|---|
| 401 | Проверьте ключ; смените, если был раскрыт |
| Модель не найдена | Базовый URL должен быть https://apimaster.ai/v1; id модели должен совпадать с маркетплейсом |
| Нет моделей APIMaster | Отредактируйте провайдера в Настройках → добавьте сопоставления → Отправить |
| Медленно / таймаут | Попробуйте другую модель; используйте Тестер API-ключей |
Reasoning / jsonc
Почему только high и max для DeepSeek?
Официальное усилие мышления, совместимое с OpenAI для DeepSeek, — это high и max. Избегайте low / medium / xhigh, которые могут непредсказуемо переназначаться.
Почему max для Claude Sonnet, а не xhigh?
Высший уровень Sonnet — max; xhigh предназначен для Opus (claude-opus-4-7 / claude-opus-4-8).
Почему нет вариантов для Haiku или MiniMax M3?
Без задокументированных значений reasoningEffort пропустите варианты — модель все равно работает; в интерфейсе просто не будут отображаться подуровни Reasoning.
Все еще получаете 400?
baseURL=https://apimaster.ai/v1(не корень сайта).- Написание id модели соответствует маркетплейсу.
- Ключ настроен через
/connectили интерфейс. - Временно удалите
variants— если обычные запросы работают, выбранныйreasoning_effortможет не поддерживаться для этой модели.
Ввод изображений / Vision
Почему OpenCode пишет «текущая модель не поддерживает ввод изображений»?
gpt-5.5и несколько моделей Claude от APIMaster.ai поддерживают ввод изображений; это сообщение обычно означает, что OpenCode не отправляет изображение как мультимодальный ввод.- Проверьте, что у модели в
opencode.jsoncесть:"attachment": true, "modalities": { "input": ["text", "image"], "output": ["text"] } - Убедитесь, что вы перезапустили OpenCode после редактирования.
- Убедитесь, что
baseURL— этоhttps://apimaster.ai/v1. - Убедитесь, что API-ключ APIMaster действителен.
- Если публичный URL изображения не работает, используйте data URL base64 или локальную загрузку.
Почему модель видит только имя вложения, а не изображение?
- Обычно OpenCode не прочитал и не преобразовал вложение в ввод изображения — он просто вставил имя файла / вложения в промпт.
- Включите
attachment: trueиmodalities.input: ["text", "image"]и используйте модель, поддерживающую ввод изображений.
Почему публичный URL изображения выдает ошибку?
- APIMaster или вышестоящий провайдер может быть ограничен сетью, форматом, размером файла, MIME, защитой от хотлинкинга или прокси при скачивании публичного изображения.
- При
Error while downloading file. Upstream status code: 400.переключитесь на data URL base64.
Все еще не работает после добавления attachment?
- Полностью закройте и перезапустите OpenCode.
- Начните новую сессию для теста.
- Убедитесь, что активная модель сессии та самая, которую вы настроили с полями изображений.
- Убедитесь, что API-ключ действителен.
- Проверьте логи OpenCode на ошибки 401 / 400 / unsupported image / invalid content type.
- Используйте Вариант B — Тест напрямую через API с изображением base64, чтобы отделить проблему модели APIMaster от проблемы адаптера OpenCode.
Безопасность
- Не помещайте API-ключ APIMaster в
opencode.jsonc; этот файл содержит только провайдера, модели, возможности изображений и Reasoning. - Не вставляйте ключ в чат, скриншоты, issue, публичную документацию или репозитории кода.
- Меняйте ключи, которые появились на скриншотах или в логах — отзовите и создайте заново в консоли, затем обновите провайдера в OpenCode.
- Предпочитайте поток
/connectв OpenCode, переменные окружения или локальное хранилище учетных данных для управления API-ключом. - OpenCode может читать/записывать файлы и выполнять shell-команды — используйте только доверенные рабочие пространства.
Контрольный список
- OpenCode Desktop установлен
- Пользовательский провайдер подключен или
apimasterвopencode.jsonc - Базовый URL /
baseURL=https://apimaster.ai/v1(неhttps://apimaster.ai/) - API-ключ через
/connectили интерфейс (не в jsonc) - Сопоставлена хотя бы одна чат-модель
- (Опционально) Варианты Reasoning соответствуют официальным уровням
- Тестовое сообщение успешно отправлено
Контрольный список ввода изображений
-
baseURL— этоhttps://apimaster.ai/v1(неhttps://api.apimaster.ai/v1) - Используется модель с поддержкой Vision, например
gpt-5.5или Claude с поддержкой Vision - У модели есть
attachment: true -
modalities.inputмодели содержит"image" - OpenCode перезапущен после редактирования
opencode.jsonc - API-ключ действителен
- Тестовое изображение в распространенном формате (PNG / JPG)
- Если публичный URL изображения не работает, попробован data URL base64
Краткий итог
- Ключи:
baseURL(https://apimaster.ai/v1), id модели, API-ключ (/connectили интерфейс), опциональные варианты Reasoning. - Имена вариантов = фактические значения
reasoning_effort. - Настраивайте уровни для каждой модели; пропускайте варианты, если они не поддерживаются (Haiku, MiniMax M3).