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

Разработка на ZENTHERIX API

Один стабильный, совместимый с OpenAI и Anthropic эндпоинт для 70+ моделей. Укажи свой base_url, авторизуйся ключом — и рабочий код готов.

Base URL: https://zentherixapi.xyz/v1 $5 / 1M токенов 70+ моделей

Быстрый старт

Три шага до первого ответа: получить ключ, указать base URL, отправить запрос. API говорит форматами OpenAI Chat Completions, OpenAI Responses и Anthropic Messages, поэтому существующие клиенты работают после замены двух строк.

  1. Возьми ключ. Формат sk-… с квотой в токенах. Ключи выдаются автоматически после оплаты (FunPay, автовыдача). Проверить баланс можно на главной странице или через GET /api/check?key=….
  2. Укажи base URL. Все запросы идут на https://zentherixapi.xyz/v1.
  3. Отправь первый запрос. Ниже — готовые варианты.
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);
Совместимость Официальные OpenAI SDK (Python, Node, Go, Java) и Anthropic SDK работают без изменений — меняются только base URL и ключ. Специальный клиент не нужен.

Аутентификация и ключи

Каждый запрос должен нести секретный ключ. Принимаются оба стандартных заголовка — выбирай тот, что ждёт твой клиент:

OpenAI-формат
Authorization: Bearer sk-ВАШ-КЛЮЧ
Anthropic-формат
x-api-key: sk-ВАШ-КЛЮЧ
anthropic-version: 2023-06-01

Формат ключа

Ключ начинается с sk- и далее содержит случайную строку. Ключ привязан к квоте в токенах: при получении задан лимит, сверх которого запросы отклоняются. Мастер-ключ (без учёта) используется только внутри инфраструктуры и наружу не выдаётся.

Проверка ключа и баланса

GET
curl "https://zentherixapi.xyz/api/check?key=sk-ВАШ-КЛЮЧ"
ПолеСмысл
validключ активен и не в кулдауне
tokens_used / tokens_leftизрасходовано и остаток по квоте
token_limitобщий лимит токенов (null = безлимит)
dollars_usedизрасходовано в долларах по тарифу
price_per_mцена за 1M токенов (5.0)
Береги ключ Ключ — как пароль: не публикуй его в клиентах, репозиториях и публичных конфигах. Для GUI-приложений (Codex.app) храни ключ в связке ключей macOS, а не в плоском файле.

Эндпоинты

Под одним base URL доступны три API-поверхности и служебные методы. Авторизация одинаковая для всех.

Метод и путьОписание
POST/v1/chat/completionsОсновной OpenAI-совместимый чат. Стриминг, tools, vision, reasoning.
POST/v1/responsesOpenAI Responses API (stateful). Используется Codex CLI и ChatGPT.app.
POST/v1/messagesAnthropic Messages API. Для Anthropic SDK и Claude Code.
POST/v1/messages/count_tokensПодсчёт токенов в формате Anthropic.
GET/v1/modelsСписок доступных моделей (74 идентификатора).
GET/api/checkПроверка ключа и баланса.
GET/api/public/statsПубличная статистика: запросы, токены, список моделей.
GET/healthHealthcheck сервиса.

Chat Completions: запрос

json
{
  "model": "gpt-6-astra",
  "messages": [
    { "role": "system", "content": "Ты полезный ассистент." },
    { "role": "user",   "content": "Привет!" }
  ],
  "temperature": 0.7,
  "max_tokens": 1024,
  "stream": false
}

Chat Completions: ответ

json
{
  "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

json
POST /v1/messages
x-api-key: sk-ВАШ-КЛЮЧ

{
  "model": "claude-sonnet-5",
  "max_tokens": 1024,
  "messages": [{ "role": "user", "content": "Привет!" }]
}

OpenAI Responses

json
POST /v1/responses
Authorization: Bearer sk-ВАШ-КЛЮЧ

{
  "model": "gpt-5.3-codex",
  "input": "Привет!"
}

Параметры

ПараметрТипОписание
modelstringИдентификатор модели из /v1/models. Неизвестное имя → 404.
messagesarrayИстория диалога (role: system / user / assistant / tool).
streamboolSSE-стриминг вместо цельного ответа.
temperature, top_pnumberСтандартные параметры сэмплирования, передаются как есть.
max_tokensintЛимит генерации.
tools / tool_choicearrayFunction calling, поддерживается всеми основными моделями.
reasoning_effortstringУровень рассуждений для reasoning-моделей (low / medium / high).

Стриминг

Поставь "stream": true, чтобы получать ответ по частям через Server-Sent Events. Каждое событие — JSON-дельта в стандартном формате потока, поток завершается сентинелом data: [DONE].

text/event-stream
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-поля транслируются в потоке как есть: что пришло от провайдера, то и уйдёт клиенту.
Отмена запроса Закрой соединение — шлюз оборвёт upstream-запрос и перестанет считать генерацию. Списаны будут только реально отправленные токены.

Модели

74 идентификатора в четырёх семействах. Полный актуальный список — GET /v1/models. Запросы можно слать на любую семейство-модель: маршрутизация, ретраи и бэкенды — забота шлюза.

СемействоКол-воКлючевые модели
OpenAI33gpt-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
Anthropic21claude-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
GLM12glm-5.3, glm-5.3-flash, glm-5.2 / 5.1 / 5, glm-4.7, glm-4.5v
DeepSeek8deepseek-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.
bash
curl -s https://zentherixapi.xyz/v1/models \
  -H "Authorization: Bearer sk-ВАШ-КЛЮЧ" | jq '.data[].id'

Интеграции

Готовые конфиги для популярных клиентов. Везде один и тот же ключ и base URL — меняется только формат подключения (Anthropic, Responses или Chat Completions).

КлиентПротоколBase URL
Claude CodeAnthropic Messageshttps://zentherixapi.xyz
Codex / ChatGPT.appOpenAI Responseshttps://zentherixapi.xyz/v1
opencodeChat Completionshttps://zentherixapi.xyz/v1
Cursor / ClineChat Completionshttps://zentherixapi.xyz/v1
OpenAI SDKChat Completions / Responseshttps://zentherixapi.xyz/v1
Anthropic SDKAnthropic Messageshttps://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-эндпоинт.

~/.codex/config.toml
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 в проекте.

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" }
      }
    }
  }
}
  1. Положи файл в ~/.config/opencode/opencode.json (или в корень проекта).
  2. Запусти opencode и открой команду /models.
  3. Выбери провайдер zentherix и нужную модель — можно закрепить через default_model в конфиге: "zentherix/gpt-6-astra".

Больше моделей — просто допиши строки в блок models: идентификаторы совпадают с GET /v1/models. Секрет можно держать вне файла через "apiKey": "{env:ZENTHERIX_API_KEY}", если используешь поддержку переменных окружения.

Cursor, Cline, Roo Code и другие OpenAI-совместимые клиенты

КлиентГде менять
CursorSettings → 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 + ключ
.env / общий случай
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.

КодЧто значиЧто делать
401Invalid API key — ключ не найден или неверенПроверь ключ через /api/check
402Quota exceeded — квота токенов исчерпанаПопроси новый ключ или ключ с большей квотой
403API key revoked — ключ отозванКлюч деактивирован, нужен новый
404Model not found — неизвестное или запрещённое имя моделиСверься с /v1/models
400Invalid 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 не ретраятся: исправь запрос и повтори сам.
Лимиты Жёстких per-minute квот на стороне клиента нет: ограничение накладывает сам провайдер, а шлюз снимает его маршрутизацией. Держи обработку 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 — баланс конкретного ключа.