Перейти к содержимому
Разработчикам

OpenAI-совместимый шлюз ко всем моделям

Меняются только base_url и ключ. Приложение шлёт запрос на g.gnzs.pro в формате OpenAI, а вместо ключей поставщиков у вас один токен ApiHub.

from openai import OpenAI

client = OpenAI(
    base_url="https://g.gnzs.pro/g/v1",
    api_key=APIHUB_KEY,
)

r = client.chat.completions.create(
    model="gpt-oss-120b",
    messages=[{"role": "user", "content": "Привет"}],
    extra_query={"sort": "cheaper"},
)
HTTP/1.1 200 OK
X-ApiHub-Seller: neuraldeep
X-ApiHub-Route: cheaper
X-RateLimit-Remaining: 59
API

Эндпоинты

Формат запросов и ответов совпадает с OpenAI, поэтому подходят официальные SDK.

POST/g/v1/chat/completionsЧат-модели в формате OpenAI Chat Completions. Модель — из тела, продавца выбирает шлюз.
POST/g/v1/embeddingsЭмбеддинги в формате OpenAI Embeddings.
POST/g/v1/{api}/{путь}Любой API из каталога у конкретного продавца: адрес и метод — на странице инструмента.

Заголовки ответа

Кто ответил и сколько осталось до лимита. Стоимость и токены каждого вызова — в кабинете, в разделе «Расход».

X-ApiHub-Seller
Продавец, который ответил
X-ApiHub-Route
Правило выбора: cheaper, cheaper:RU и т. п.
X-RateLimit-Remaining
Сколько запросов осталось в лимите ключа

Параметр sort

Правило выбора продавца, если модель продают несколько. Без параметра — optimal.

cheaper
Минимальная цена
faster
Минимальная задержка
reliable
Максимальная доля успешных ответов
optimal
Дешевле среди не худших по скорости и надёжности
country=RU
Только продавцы с обработкой в этой стране
/g/v1/chat/completions?sort=optimal&country=RU
Попытки

Продавец не ответил — запрос уходит следующему

На 5xx, 429 и обрыве связи шлюз берёт следующего продавца из списка — до трёх попыток. Неудачная попытка не оплачивается.

ЗапросPOST /g/v1/chat/completions?sort=cheaper

Модель — в теле, продавца выбирает шлюз.

Попытка 1503 · together

Продавец упал. Деньги не списываются.

Попытка 2200 · X-ApiHub-Seller: neuraldeep

Ответ следующего продавца, оплата по его цене.

Ошибки шлюза приходят телом {"error": {"message": "…", "status": 402}}: 402 — на балансе нет денег, 429 — превышен лимит. Асинхронного режима пока нет.

Получите ключ и отправьте первый запрос

Без подписки · пробный баланс на первые запросы