Разработка на ZENTHERIX API
Один стабильный, совместимый с OpenAI и Anthropic эндпоинт для 70+ моделей.
Укажи свой base_url, авторизуйся ключом — и рабочий код готов.
Быстрый старт
Три шага до первого ответа: получить ключ, указать base URL, отправить запрос. API говорит форматами OpenAI Chat Completions, OpenAI Responses и Anthropic Messages, поэтому существующие клиенты работают после замены двух строк.
- Возьми ключ. Формат
sk-…с квотой в токенах. Ключи выдаются автоматически после оплаты (FunPay, автовыдача). Проверить баланс можно на главной странице или черезGET /api/check?key=…. - Укажи base URL. Все запросы идут на
https://zentherixapi.xyz/v1. - Отправь первый запрос. Ниже — готовые варианты.
curl https://zentherixapi.xyz/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-ВАШ-КЛЮЧ" \ -d '{ "model": "gpt-6-astra", "messages": [{"role": "user", "content": "Привет!"}] }'
pip install openai from openai import OpenAI client = OpenAI( base_url="https://zentherixapi.xyz/v1", api_key="sk-ВАШ-КЛЮЧ", ) resp = client.chat.completions.create( model="gpt-6-astra", messages=[{"role": "user", "content": "Привет!"}], ) print(resp.choices[0].message.content)
npm i openai import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://zentherixapi.xyz/v1", apiKey: "sk-ВАШ-КЛЮЧ", }); const resp = await client.chat.completions.create({ model: "gpt-6-astra", messages: [{ role: "user", content: "Привет!" }], }); console.log(resp.choices[0].message.content);
Аутентификация и ключи
Каждый запрос должен нести секретный ключ. Принимаются оба стандартных заголовка — выбирай тот, что ждёт твой клиент:
Authorization: Bearer sk-ВАШ-КЛЮЧ
x-api-key: sk-ВАШ-КЛЮЧ anthropic-version: 2023-06-01
Формат ключа
Ключ начинается с sk- и далее содержит случайную строку. Ключ привязан к квоте
в токенах: при получении задан лимит, сверх которого запросы отклоняются. Мастер-ключ
(без учёта) используется только внутри инфраструктуры и наружу не выдаётся.
Проверка ключа и баланса
curl "https://zentherixapi.xyz/api/check?key=sk-ВАШ-КЛЮЧ"
| Поле | Смысл |
|---|---|
| valid | ключ активен и не в кулдауне |
| tokens_used / tokens_left | израсходовано и остаток по квоте |
| token_limit | общий лимит токенов (null = безлимит) |
| dollars_used | израсходовано в долларах по тарифу |
| price_per_m | цена за 1M токенов (5.0) |
Эндпоинты
Под одним base URL доступны три API-поверхности и служебные методы. Авторизация одинаковая для всех.
| Метод и путь | Описание |
|---|---|
| POST/v1/chat/completions | Основной OpenAI-совместимый чат. Стриминг, tools, vision, reasoning. |
| POST/v1/responses | OpenAI Responses API (stateful). Используется Codex CLI и ChatGPT.app. |
| POST/v1/messages | Anthropic Messages API. Для Anthropic SDK и Claude Code. |
| POST/v1/messages/count_tokens | Подсчёт токенов в формате Anthropic. |
| GET/v1/models | Список доступных моделей (74 идентификатора). |
| GET/api/check | Проверка ключа и баланса. |
| GET/api/public/stats | Публичная статистика: запросы, токены, список моделей. |
| GET/health | Healthcheck сервиса. |
Chat Completions: запрос
{
"model": "gpt-6-astra",
"messages": [
{ "role": "system", "content": "Ты полезный ассистент." },
{ "role": "user", "content": "Привет!" }
],
"temperature": 0.7,
"max_tokens": 1024,
"stream": false
}
Chat Completions: ответ
{
"id": "chatcmpl-…",
"object": "chat.completion",
"model": "gpt-6-astra",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "Привет! Чем помочь?" },
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 18, "completion_tokens": 9, "total_tokens": 27 }
}
Anthropic Messages
POST /v1/messages x-api-key: sk-ВАШ-КЛЮЧ { "model": "claude-sonnet-5", "max_tokens": 1024, "messages": [{ "role": "user", "content": "Привет!" }] }
OpenAI Responses
POST /v1/responses Authorization: Bearer sk-ВАШ-КЛЮЧ { "model": "gpt-5.3-codex", "input": "Привет!" }
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| model | string | Идентификатор модели из /v1/models. Неизвестное имя → 404. |
| messages | array | История диалога (role: system / user / assistant / tool). |
| stream | bool | SSE-стриминг вместо цельного ответа. |
| temperature, top_p | number | Стандартные параметры сэмплирования, передаются как есть. |
| max_tokens | int | Лимит генерации. |
| tools / tool_choice | array | Function calling, поддерживается всеми основными моделями. |
| reasoning_effort | string | Уровень рассуждений для reasoning-моделей (low / medium / high). |
Стриминг
Поставь "stream": true, чтобы получать ответ по частям через Server-Sent Events.
Каждое событие — JSON-дельта в стандартном формате потока, поток завершается сентинелом
data: [DONE].
data: {"choices":[{"delta":{"content":"Прив"}}]} data: {"choices":[{"delta":{"content":"ет!"}}]} data: {"choices":[{"delta":{},"finish_reason":"stop"}]} data: [DONE]
- Для Anthropic-формата события идут в стиле
message_start/content_block_delta/message_stop. - Для Responses API — события
response.output_text.deltaи т.п. - Reasoning-поля транслируются в потоке как есть: что пришло от провайдера, то и уйдёт клиенту.
Модели
74 идентификатора в четырёх семействах. Полный актуальный список —
GET /v1/models. Запросы можно слать на любую семейство-модель: маршрутизация,
ретраи и бэкенды — забота шлюза.
| Семейство | Кол-во | Ключевые модели |
|---|---|---|
| OpenAI | 33 | gpt-6-astra, gpt-6-sol, gpt-6-luna, gpt-5.6-sol / terra / luna, gpt-5.5-pro, gpt-5.3-codex, gpt-5-thinking, o3, o4-mini, gpt-4o |
| Anthropic | 21 | claude-fable-5-1, claude-opus-5-5, claude-opus-5, claude-sonnet-5, claude-opus-4-8 / 4-7 / 4-6, claude-sonnet-4-6, claude-haiku-4-5 |
| GLM | 12 | glm-5.3, glm-5.3-flash, glm-5.2 / 5.1 / 5, glm-4.7, glm-4.5v |
| DeepSeek | 8 | deepseek-v4-pro, deepseek-v4-flash, deepseek-v3.2, deepseek-v3.2-speciale, deepseek-r1 |
Особенности имён
gpt-6,astra,gpt-5.6— короткие алиасы флагманов.- Пробелы в имени заменяются на дефис:
GPT 6 Solиclaude opus 5.5тоже работают. - Суффиксы вида
-2026-04-23и-latestотрезаются: запросgpt-5.5-pro-2026-04-23попадёт наgpt-5.5-pro. - Дата-суффиксы Anthropic вида
-20251101работают так же. - Запрещённые категории моделей возвращают
404 Model not found.
curl -s https://zentherixapi.xyz/v1/models \ -H "Authorization: Bearer sk-ВАШ-КЛЮЧ" | jq '.data[].id'
Интеграции
Готовые конфиги для популярных клиентов. Везде один и тот же ключ и base URL — меняется только формат подключения (Anthropic, Responses или Chat Completions).
| Клиент | Протокол | Base URL |
|---|---|---|
| Claude Code | Anthropic Messages | https://zentherixapi.xyz |
| Codex / ChatGPT.app | OpenAI Responses | https://zentherixapi.xyz/v1 |
| opencode | Chat Completions | https://zentherixapi.xyz/v1 |
| Cursor / Cline | Chat Completions | https://zentherixapi.xyz/v1 |
| OpenAI SDK | Chat Completions / Responses | https://zentherixapi.xyz/v1 |
| Anthropic SDK | Anthropic Messages | https://zentherixapi.xyz |
Claude Code
Официальный CLI Anthropic направляем на наш Anthropic-эндпоинт через переменные окружения. Ключ подставляется как токен, модель — любая из семейства Claude.
# ~/.zshrc или ~/.bashrc export ANTHROPIC_BASE_URL="https://zentherixapi.xyz" export ANTHROPIC_AUTH_TOKEN="sk-ВАШ-КЛЮЧ" export ANTHROPIC_MODEL="claude-sonnet-5" claude
# PowerShell — на текущую сессию $env:ANTHROPIC_BASE_URL="https://zentherixapi.xyz" $env:ANTHROPIC_AUTH_TOKEN="sk-ВАШ-КЛЮЧ" $env:ANTHROPIC_MODEL="claude-sonnet-5" claude
Для стольких настроек навсегда: setx в Windows или строки в
rc-файле в Unix. Работают и ANTHROPIC_API_KEY — шлюз принимает и Bearer, и x-api-key.
Codex и приложение ChatGPT (macOS)
Codex CLI и десктопное приложение ChatGPT читают один и тот же
~/.codex/config.toml. Провайдер с нулевым значением wire_api указывает
на наш Responses-эндпоинт.
model = "gpt-5.3-codex" model_provider = "zentherix" [model_providers.zentherix] name = "ZentherixAPI" base_url = "https://zentherixapi.xyz/v1" wire_api = "responses" request_max_retries = 3 # ключ надёжнее держать в связке ключей macOS — GUI не видит ~/.zshrc: # security add-generic-password -U -a "zentherix" \ # -s "Zentherix API Key" -w "sk-ВАШ-КЛЮЧ" [model_providers.zentherix.auth] command = "/usr/bin/security" args = ["find-generic-password", "-a", "zentherix", "-s", "Zentherix API Key", "-w"]
codex exec "скажи привет" — если приходит ответ, провайдер настроен верно.
Для приложения ChatGPT перезапусти его после правки конфига.
opencode
opencode подключает любые OpenAI-совместимые эндпоинты как собственный провайдер через
пакет @ai-sdk/openai-compatible. Конфиг — глобальный
~/.config/opencode/opencode.json или локальный opencode.json в проекте.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"zentherix": {
"npm": "@ai-sdk/openai-compatible",
"name": "Zentherix",
"options": {
"baseURL": "https://zentherixapi.xyz/v1",
"apiKey": "sk-ВАШ-КЛЮЧ"
},
"models": {
"gpt-6-astra": { "name": "GPT-6 Astra", "limit": { "context": 1000000 } },
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"claude-opus-5": { "name": "Claude Opus 5" },
"glm-5.3": { "name": "GLM-5.3" },
"deepseek-v4-pro": { "name": "DeepSeek V4 Pro" }
}
}
}
}
- Положи файл в
~/.config/opencode/opencode.json(или в корень проекта). - Запусти
opencodeи открой команду/models. - Выбери провайдер
zentherixи нужную модель — можно закрепить черезdefault_modelв конфиге:"zentherix/gpt-6-astra".
Больше моделей — просто допиши строки в блок models:
идентификаторы совпадают с GET /v1/models. Секрет можно держать вне файла через
"apiKey": "{env:ZENTHERIX_API_KEY}", если используешь поддержку переменных окружения.
Cursor, Cline, Roo Code и другие OpenAI-совместимые клиенты
| Клиент | Где менять |
|---|---|
| Cursor | Settings → Models → включить модель → «OpenAI API Key» = ключ → «Override OpenAI Base URL» = https://zentherixapi.xyz/v1 |
| Cline / Roo Code | Провайдер openai-compatible, Base URL https://zentherixapi.xyz/v1, API Key = ключ |
| VS Code (GitHub Copilot и т.п.) | Точка подмены API-плагинами: любой клиент с полем «Base URL / OpenAI endpoint» |
| Windsurf, Aider, Continue | То же поле base_url + ключ |
OPENAI_BASE_URL=https://zentherixapi.xyz/v1 OPENAI_API_KEY=sk-ВАШ-КЛЮЧ
SDK: Python и JavaScript
Официальные SDK меняются только двумя строками — base URL и ключ. Ниже рабочие примеры со стримингом.
from openai import OpenAI client = OpenAI(base_url="https://zentherixapi.xyz/v1", api_key="sk-ВАШ-КЛЮЧ") stream = client.chat.completions.create( model="gpt-6-astra", messages=[{"role": "user", "content": "Напиши хаику о коде"}], stream=True, ) for chunk in stream: print(chunk.choices[0].delta.content or "", end="", flush=True)
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://zentherixapi.xyz/v1", apiKey: process.env.ZENTHERIX_API_KEY, }); const stream = await client.chat.completions.create({ model: "claude-sonnet-5", messages: [{ role: "user", content: "Привет" }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? ""); }
# pip install anthropic import anthropic client = anthropic.Anthropic( base_url="https://zentherixapi.xyz", api_key="sk-ВАШ-КЛЮЧ", ) msg = client.messages.create( model="claude-opus-5", max_tokens=1024, messages=[{"role": "user", "content": "Привет!"}], ) print(msg.content[0].text)
curl
Без SDK: обычный HTTPS POST с Bearer-токеном. Работает и для стриминга (-N).
curl https://zentherixapi.xyz/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-ВАШ-КЛЮЧ" \ -d '{"model":"gpt-6-astra","messages":[{"role":"user","content":"привет"}]}'
curl -N https://zentherixapi.xyz/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-ВАШ-КЛЮЧ" \ -d '{"model":"gpt-6-astra","stream":true,"messages":[{"role":"user","content":"привет"}]}'
curl https://zentherixapi.xyz/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-ВАШ-КЛЮЧ" \ -H "anthropic-version: 2023-06-01" \ -d '{"model":"claude-sonnet-5","max_tokens":256,"messages":[{"role":"user","content":"привет"}]}'
Тарифы и биллинг
Единая цена без подписок: $5 за 1M токенов, вход и выход считаются вместе.
Списание идёт по факту — usage из ответа превращается в токены, токены — в доллары.
| Пакет | Объём | Цена |
|---|---|---|
| Старт | 1M токенов | $5 |
| Стандарт | 5M токенов | $25 |
| Про | 20M токенов | $100 |
| Большие пакеты | до 1B токенов | до €80 (прайс лотов FunPay) |
- Ключи продаются и выдаются автоматически через FunPay (автовыдача, лоты с маркером
[ZENTHERIX:…]). - Модели GLM и DeepSeek сейчас идут со скидкой -50% на лотах.
- Отзыв 4–5 звёзд на FunPay — бонус +5M токенов на тот же ключ.
- Квота исчерпана →
402 Quota exceeded. Ключ не «уходит в минус».
curl "https://zentherixapi.xyz/api/check?key=sk-ВАШ-КЛЮЧ" # { "valid": true, "tokens_used": 123456, "tokens_left": 4876544, … }
Ошибки и лимиты
Ошибки возвращаются в формате того API, который вызывали: OpenAI-стиль для Chat Completions и Responses, Anthropic-стиль для Messages.
| Код | Что значи | Что делать |
|---|---|---|
| 401 | Invalid API key — ключ не найден или неверен | Проверь ключ через /api/check |
| 402 | Quota exceeded — квота токенов исчерпана | Попроси новый ключ или ключ с большей квотой |
| 403 | API key revoked — ключ отозван | Ключ деактивирован, нужен новый |
| 404 | Model not found — неизвестное или запрещённое имя модели | Сверься с /v1/models |
| 400 | Invalid JSON body / невалидный запрос | Проверь тело запроса и заголовки |
| 429 / 5xx | Лимиты провайдера или его сбой | Шлюз сам делает ретраи по резервным бэкендам; повтори запрос |
Формат ответа
{
"error": {
"message": "Quota exceeded. Top up this API key.",
"type": "insufficient_quota",
"param": null,
"code": 402
}
}
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key."
}
}
Как устроены ретраи
- Шлюз держит пул upstream-ключей и при
429/5xxпереводит запрос на следующий бэкенд с кулдауном для проблемного. - Постоянное
401от провайдера уводит бэкенд в кулдаун — клиент этого не видит, он получает либо успех, либо честную ошибку. - Клиентские 4xx не ретраятся: исправь запрос и повтори сам.
429 в коде — на всякий случай.
FAQ
Почему у Claude Code путь без /v1, а у Codex — с /v1?
Anthropic-протокол сам по себе живёт на корне API Anthropic — потому
ANTHROPIC_BASE_URL указывает на https://zentherixapi.xyz.
OpenAI-протоколы принято размещать под /v1.
Работает ли vision и стриминг у всех моделей?
Стриминг — у всех. Vision — у моделей с поддержкой изображений (GPT-6/5.x, Claude 4/5, GLM-4.5v и т.д.); для неподдерживающих шлюз честно вернёт ошибку провайдера.
Можно ли использовать один ключ в нескольких проектах?
Да, ключ не привязан к проекту или IP. Остаток квоты общий — следи через
/api/check.
Что будет при исчерпании квоты?
Запросы начнут получать 402 Quota exceeded. Токены не «уходят в минус» —
после пополнения или выдачи нового ключа всё работает сразу.
Есть ли какие-то служебные эндпоинты для мониторинга?
GET /health — жив/не жив; GET /api/public/stats — публичная
статистика и список моделей; GET /api/check — баланс конкретного ключа.