Документация API go2llm

DeepSeek Harness: подключить свой API и разобрать Connection error

Сторонний сервис в DeepSeek Harness добавляется через Add model provider → Custom model API: нужны Provider ID, Base URL, протокол, ключ и хотя бы одна модель. Для go2llm это https://go2llm.tech, протокол Anthropic Messages, ключ gk_sk_…. Connection error к ключу и модели отношения не имеет: так DSH сообщает, что запрос не дошёл до сервера.

Обновлено 1 ноября 2026. Ответы прода go2llm в этом тексте проверены curl'ом в тот же день, цены — по каталогу v43 от 30 октября 2026.

Почему ошибка называется Connection error

Connection error. — это APIConnectionError из Anthropic SDK, на котором работает DSH. Клиент не получил HTTP-ответа: запрос упал на DNS, TCP или TLS. Кода ответа в этом случае нет, поэтому строка говорит про соединение, а не про 401.

DSH на такой отказ ретраит. В чате это выглядит так:

Retried model request (2/5) · 1s
Retry delay: 961ms
Failure reason: Connection error.

DSH повторяет такой запрос, и после последней попытки ход останавливается. Пока в строке стоит Connection error, менять ключ бессмысленно: до проверки ключа дело не дошло.

Что показывает DSHЧто это значитГде смотреть
Connection error.Запрос не дошёл до сервераСеть, прокси, VPN, Base URL
API key is invalid, 401 no-keyКлюч не передан или неизвестенПоле ключа, gk_sk_…
403 key revoked / expiredКлюч отозван или истёкКабинет ключей
404 endpoint_not_foundBase URL собран с лишним сегментом/v1 в адресе
404 model_not_foundid модели не из опубликованного каталогаGET /v1/models
402 insufficient_balanceКончился балансКабинет, GET /v1/me
429 rate_limitБольше 60 запросов в минуту на ключRetry-After

Строку no-key go2llm отдаёт на запрос без ключа — это 401, а не разрыв соединения. Проверяется одной командой, и она же отделяет сеть от авторизации.

Шесть полей формы Custom model API

ПолеЗначение для go2llmЧем ломается
Provider IDgo2llmПишется строчными, после сохранения не меняется
Display namego2llmНи на что не влияет
Base URLhttps://go2llm.techЛишний /v1 в конце даёт 404
API protocolAnthropic MessagesДругой протокол — другой endpoint и другой адрес
API keygk_sk_…Хранится write-only в $DSH_HOME/.credentials.yaml
Modelsхотя бы один id из каталогаПустой список — форма не сохранится

DSH знает три протокола: openai-completions, openai-responses, anthropic-messages. У одного провайдера протокол один, поэтому шлюз, который умеет и Anthropic, и OpenAI, подключается двумя провайдерами.

Кнопка Fetch available models обращается к GET {Base URL}/models. У go2llm по корню домена такого маршрута нет — https://go2llm.tech/models отвечает 404, публичный каталог живёт на GET /v1/models. Поэтому модели надёжнее вписать руками: claude-sonnet-5, deepseek-v4-pro, kimi-k3, glm-5.3 — все id есть в ответе /v1/models.

Где ставится /v1, а где он всё ломает

Anthropic-клиент DSH добавляет путь сам: запрос уходит на POST {Base URL}/v1/messages. Значит в поле Base URL нужен корень домена, без /v1.

Ошибка в одном сегменте адреса, а в чате видна только короткая строка. При Base URL https://go2llm.tech/v1 клиент собирает https://go2llm.tech/v1/v1/messages. Ответ прода на такой путь 1 ноября 2026:

{"error":{"type":"endpoint_not_found","code":"endpoint_not_found",
 "message":"/v1/v1/messages is not published by this gateway. Available: POST /v1/messages, …"}}

Шлюз сам называет правильный маршрут в тексте ошибки, но DSH показывает её коротко, и /v1/v1 в чате не видно.

Два правильных адреса для одного и того же ключа:

  • Anthropic Messages (DSH, Claude Code, Claude Agent SDK): https://go2llm.tech
  • OpenAI Chat Completions (OpenAI SDK, OpenCode, LiteLLM): https://go2llm.tech/v1

Проверка за 30 секунд, без DSH

Три команды отвечают на вопрос «кто виноват — шлюз или моя сеть». Проверено 1 ноября 2026 против прода.

# 1. Каталог. Без ключа. Должен быть 200 и список моделей
curl -sS https://go2llm.tech/v1/models | head -c 200

# 2. Маршрут Anthropic. Без ключа. Должен быть 401 no-key, а не таймаут
curl -sS -X POST https://go2llm.tech/v1/messages \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":5,"messages":[{"role":"user","content":"hi"}]}' \
  -w "\nHTTP %{http_code}\n"

# 3. Реальный запрос с ключом
curl -sS https://go2llm.tech/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":120,"messages":[{"role":"user","content":"Ответь одним словом: работает"}]}'

Ответ 401 no-key во второй команде означает, что go2llm принял соединение и отказал в авторизации: адрес и порт доступны. Could not resolve host в первой команде указывает на DNS или на недоступность домена с этой машины.

Ответ go2llm на POST /v1/messages содержит usage.cost_usd — фактическую стоимость вызова в долларах. То же поле приходит в финальном usage-блоке SSE-стрима, поэтому счёт можно сверять прямо из кода.

curl работает, а DSH — нет

Четыре места, где теряется соединение у приложения, а не у ключа.

  1. VPN или корпоративный прокси. Терминал и приложение ходят в сеть по-разному. Если DSH не использует тот же прокси, что терминал, задайте HTTPS_PROXY и HTTP_PROXY в окружении, из которого он запускается, и перезапустите приложение.
  2. Антивирус с проверкой TLS. Он подменяет сертификат, а Node отвергает цепочку — снаружи это выглядит как разрыв соединения.
  3. Кривой Base URL. http:// вместо https://, пробел в конце строки, скопированный вместе с адресом. Такие ошибки не воспроизводятся curl'ом, если curl набран руками.
  4. Сеть, которая режет домен. Корпоративный фаервол и часть провайдеров блокируют неизвестные домены. Проверка та же — первая команда из блока выше.

Порядок действий простой: сначала curl, потом ключ, потом модель. Пока curl не отвечает, остальное проверять нечего.

Ключ, лимиты и что вставлять в поле

Ключ выпускается в кабинете go2llm и начинается с gk_sk_. При регистрации на баланс начисляется $1, этого хватает на первый запрос без пополнения. Оплата — pay-as-you-go: минимум $1, рублями через СБП или криптовалютой, подписок и пакетов нет.

Лимиты на ключ: 60 запросов в минуту суммарно по всем моделям и endpoints, ещё по 60 RPM отдельными счётчиками у GET /v1/me и POST /v1/messages/count_tokens, квота в долларах, список разрешённых моделей и IP allow-list. Баланс не уходит ниже нуля: шлюз резервирует оценку стоимости до вызова и списывает фактическую после. GET /v1/me отдаёт баланс, квоту и настроенный rpm_limit своего ключа.

Сколько это стоит

Каталог v43, 30 октября 2026. Цены — доллары за 1M токенов, cache — чтение кэша.

МодельВходВыходКэшОфициально вход / выход / кэшДешевле
claude-sonnet-50.3291.640.032882 / 10 / 0.26.1×
claude-haiku-4-50.130.650.012991 / 5 / 0.17.7×
deepseek-v4-pro0.0660.1980.00220.66 / 1.98 / 0.02210.0×
kimi-k30.3021.510.030153 / 15 / 0.39.9×
claude-sonnet-5-51.57.50.0752 / 10 / 0.11.3×

Четыре строки сверху — модели, которые чаще берут под кодинг-агента; пятая показывает нижнюю границу скидки, чтобы таблица не выглядела подборкой выгодных примеров. Для агента сравнивать надо не вход и выход, а смешанную цену: 10% свежего входа, 5% выхода и 85% чтения кэша. У claude-sonnet-5 выходит $0.1428 за 1M смешанных токенов против $0.87 по прайсу Anthropic (platform.claude.com). Актуальные цены и версия каталога лежат в GET /api/pricing.

Где этот способ не подойдёт

Форма Custom model API в DSH настраивает только текстовые вызовы и не знает про генерацию изображений: /v1/images/generations в ней не задать, картиночные модели подключаются отдельно, своим SDK или curl.

Каталог моделей не подставляется сам: id вписывается вручную, кнопка Fetch работает только там, где GET {Base URL}/models отвечает. Каталог go2llm меняется, поэтому id из чужой статьи полугодичной давности даст 404 model_not_found; правда всегда в GET /v1/models.

Замена подписки DeepSeek тоже не происходит: аккаунтный маршрут DSH и сторонний провайдер живут рядом, и переключение между ними ручное — в меню модели.

Что проверено, а что нет: форму DSH и ответы прода go2llm мы сверяли по документации DeepSeek Harness и curl'ом 1 ноября 2026. Полного живого прогона DSH с ключом go2llm в этом тексте нет, и выдавать его за проверенный мы не будем. Если у вас конфигурация разошлась с описанной — напишите на support@go2llm.tech или в Telegram @go2llm_support.

Что дальше

Справочник кодов ошибок и стратегий ретрая — в разделе «Ошибки API», тарификация и списания — на странице цен, быстрый старт и endpoints — в документации.

Получить ключ и сделать первый запрос за 3 минуты → https://go2llm.tech/