Направьте Anthropic SDK на apiToken.sale
Каждый официальный Anthropic SDK принимает кастомный base URL, поэтому переход на apiToken.sale — это изменение одного аргумента. Идентификаторы моделей, код сообщений и логика стриминга остаются ровно теми же — меняются только эндпоинт и цена за токен.
·
Один аргумент переключает эндпоинт
Оба официальных SDK Anthropic — Python и TypeScript — позволяют переопределить корень API при создании клиента. Укажите https://router.apitoken.sale, и каждый запрос, который ваш код уже отправляет, будет обслуживаться шлюзом apiToken.sale вместо api.anthropic.com. Больше в кодовой базе ничего не меняется: тот же пакет anthropic, тот же Messages API, те же идентификаторы моделей вроде claude-opus-4-8, те же объекты ответов.
Меняется биллинг. Каждый вызов тарифицируется по официальным токен-расценкам Anthropic, из суммы вычитается ваша фиксированная скидка 50%, а итог списывается с предоплатного баланса, который вы пополняете на целое число долларов. Никакой подписки и платы за место — дни простоя ничего не стоят.
Читайте также: Быстрый старт Claude API: настройка и первый вызов
Python: base_url в клиенте
from anthropic import Anthropic
client = Anthropic(
base_url="https://router.apitoken.sale",
api_key="sk-pool-•••",
)
msg = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)Асинхронный клиент принимает тот же именованный аргумент: AsyncAnthropic(base_url=..., api_key=...). Стриминг через client.messages.stream, tool use, системные промпты и промпт-кеширование работают по тому же соединению — отдельный эндпоинт для них настраивать не нужно.
Передавайте голый корень, без пути. SDK сам добавляет /v1/messages, поэтому base_url=".../v1" приведёт к запросам на /v1/v1/messages и ошибке 404. То же правило действует для TypeScript SDK.
TypeScript: baseURL в клиенте
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://router.apitoken.sale",
apiKey: "sk-pool-•••",
});
const msg = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});Пакет @anthropic-ai/sdk сам отправляет заголовки x-api-key и anthropic-version — ровно так же, как при работе с официальным эндпоинтом. Ретраи, таймауты и классы ошибок (APIError, RateLimitError и остальные) ведут себя идентично, поэтому существующая обработка ошибок продолжает работать.
В общем коде используйте переменные окружения
Оба SDK читают ANTHROPIC_BASE_URL и ANTHROPIC_API_KEY из окружения, если аргументы конструктора не заданы. Тогда переключение становится деталью деплоя, а не изменением кода — удобно, когда один репозиторий работает с разными эндпоинтами в разработке и в продакшене.
export ANTHROPIC_BASE_URL=https://router.apitoken.sale export ANTHROPIC_API_KEY=sk-pool-••• # your code now constructs Anthropic() with no arguments
Инструменты поверх SDK наследуют те же переменные. Например, Claude Code напрямую учитывает ANTHROPIC_BASE_URL и ANTHROPIC_API_KEY, а фреймворки вроде LangChain или LiteLLM пробрасывают это окружение своему Anthropic-клиенту внутри. Явные аргументы конструктора важнее переменных окружения, если заданы оба, поэтому разовый оверрайд в скрипте никогда не протечёт в конфигурацию деплоя.
Что проходит через шлюз без изменений
- Весь Messages API: POST /v1/messages с тем же JSON запроса и ответа.
- SSE-стриминг — инкрементальные чанки приходят ровно как с api.anthropic.com.
- Tool use и function calling, включая многоходовые циклы tool_result.
- Системные промпты, vision-входы и промпт-кеширование с брейкпоинтами cache_control.
- Объект usage в каждом ответе — ваш код учёта токенов и расходов продолжает работать.
- Идентификаторы моделей: claude-opus-4-8, claude-sonnet-5, claude-haiku-4-5 и остальной поддерживаемый каталог.
Один ключ покрывает все поддерживаемые модели — Claude наряду с GPT, Gemini и Kimi, — поэтому в мультипровайдерном проекте остаются одни креды и один баланс. Расход по каждому запросу и применённая скидка видны в панели после каждого вызова.
Чеклист первого запроса и частые ошибки
- 01Создайте бесплатный аккаунт, откройте панель и сгенерируйте ключ — он выглядит как sk-pool-… и работает с поддерживаемыми моделями Claude, GPT, Gemini и Kimi.
- 02Задайте base_url / baseURL на https://router.apitoken.sale в коде или экспортируйте ANTHROPIC_BASE_URL и ANTHROPIC_API_KEY.
- 03Один раз запустите сниппет на Python или TypeScript выше и убедитесь, что получаете обычный ответ Anthropic message.
- 04Откройте панель и проверьте, что запрос появился с токен-usage, стоимостью и скидкой.
| Статус | Значение | Решение |
|---|---|---|
| 401 Unauthorized | Отсутствует или неверен x-api-key, либо неправильный base URL | Перепроверьте ключ и что URL — голый корень |
| 400 Bad Request | Некорректное тело или documented_limitation / unsupported_parameter на названном поле | Проверьте идентификатор модели и max_tokens; если details.error_code задан — уберите поле |
| 402 billing_error | Недостаточно средств на предоплатном балансе — error.type billing_error, не 429 | Пополните на любое целое число долларов в панели |
| 429 Too Many Requests | Параллелизм выше текущего лимита | Учитывайте Retry-After и снизьте параллелизм |
Поскольку SDK, формат протокола и таксономия ошибок идентичны на обоих эндпоинтах, переключение обратимо в любой момент: верните base_url на api.anthropic.com (или удалите оверрайд) — и тот же код снова общается с Anthropic напрямую. Многие команды на неделю миграции держат оба клиента рядом и направляют небольшой процент трафика на новый эндпоинт перед полным переключением.
Существующие интеграции на прежнем хосте https://api.apitoken.sale продолжают работать. Единый роутер router.apitoken.sale — рекомендуемый эндпоинт для новых настроек, потому что один base URL обслуживает всех четырёх провайдеров.
Частые вопросы
Можно ли и дальше пользоваться официальным Anthropic SDK?
Да. Задайте base_url (Python) или baseURL (TypeScript) на https://router.apitoken.sale, и всё остальное — импорты, идентификаторы моделей, стриминг, обработка ошибок — останется прежним.
Меняются ли идентификаторы моделей при смене base URL?
Нет. Используйте те же идентификаторы, что и в официальном API, например claude-opus-4-8, claude-sonnet-5 и claude-haiku-4-5.
Должен ли base URL заканчиваться на /v1?
Нет. SDK сам добавляет /v1/messages к переданному корню, поэтому завершающий /v1 ломает путь. Передавайте ровно https://router.apitoken.sale.
Работают ли стриминг и tool use через кастомный base URL?
Да. Шлюз обслуживает стандартный Anthropic Messages API, поэтому SSE-стриминг, вызовы инструментов, системные промпты и промпт-кеширование ведут себя ровно как с api.anthropic.com.
Как позже вернуться на Anthropic?
Уберите аргумент base_url / baseURL или снимите ANTHROPIC_BASE_URL. SDK вернётся к умолчанию https://api.anthropic.com — других изменений в коде не потребуется.
Используйте Google или GitHub, чтобы получить ключ и бонус $5 на баланс платформы до пополнения.