Справочник
GET /v1/account
curl -s https://api.genmux.tech/v1/account -H "Authorization: Bearer $API_KEY"{
"id": "…",
"name": "…",
"balance": 498,
"inflight": 1,
"max_inflight": 20,
"key": {"prefix": "nb_live_AbCdEfGh", "rate_limit_rps": 10}
}GET /v1/models
Возвращает публичный каталог моделей — id, поддерживаемые тиры разрешения и соотношения сторон, юниты за тир и доступность. Аутентификация не требуется.
Доступные модели
Модели, которые можно вызывать прямо сейчас, прямо из этого каталога — скопируйте id в код или конфиг агента.
| ID модели | Тип | Контекст / разрешения | Инструменты | Вход | Выход |
|---|---|---|---|---|---|
Nano Banana nanobanana | изображения | 1K | — | 2 юнитов / изображение | — |
Nano Banana Pro nanobanana-pro | изображения | 1K · 2K · 4K | — | 4 юнитов / изображение | — |
Qwen-Image 2.0 qwen-image-2 | изображения | 1K · 2K | — | 3 юнитов / изображение | — |
Qwen-Image Max qwen-image-max | изображения | 1K · 2K | — | 8 юнитов / изображение | — |
Seedream 5.0 seedream-5 | изображения | 2K · 4K | — | 16 юнитов / изображение | — |
Wan 2.7 Image wan-2-7-image | изображения | 1K · 2K | — | 2 юнитов / изображение | — |
Doubao Seed 2.0 Pro doubao-seed-2-pro | чат | 256K | да | 85 юнитов / 1M токенов | 408 юнитов / 1M токенов |
Doubao Seed 2.0 Code doubao-seed-2-code | чат | 256K | да | 85 юнитов / 1M токенов | 408 юнитов / 1M токенов |
Doubao Seed 2.0 Lite doubao-seed-2-lite | чат | 256K | — | 17 юнитов / 1M токенов | 85 юнитов / 1M токенов |
Doubao Seed 2.0 Mini doubao-seed-2-mini | чат | 256K | — | 2,146 юнитов / 1M токенов | 68 юнитов / 1M токенов |
Kimi K3 kimi-k3 | чат | 1M | да | 197,028 юнитов / 1M токенов | 985,815 юнитов / 1M токенов |
Claude Opus 5.5 claude-opus-5-5 | чат | 200K | да | 146,88 юнитов / 1M токенов | 734,4 юнитов / 1M токенов |
Claude Fable 5.1 claude-fable-5-1 | чат | 200K | да | 1 700 юнитов / 1M токенов | 1 700 юнитов / 1M токенов |
GPT-6 Astra gpt-6-astra | чат | 128K | да | 68 юнитов / 1M токенов | 340 юнитов / 1M токенов |
GPT-5.6 Terra gpt-5.6-terra | чат | 128K | да | 17 юнитов / 1M токенов | 170 юнитов / 1M токенов |
Qwen3.8-Max qwen3.8-max | чат | 1M | да | 138,718 юнитов / 1M токенов | 416,161 юнитов / 1M токенов |
Копируйте id модели прямо в код или конфиг агента. Живой список из GET /v1/models — показаны только модели, доступные прямо сейчас.
curl -s https://api.genmux.tech/v1/models{
"object": "list",
"data": [
{
"id": "nanobanana",
"object": "model",
"created": 1756411279,
"owned_by": "genmux",
"display_name": "Nano Banana",
"description": "Fast text-to-image and image-to-image at 1K.",
"capability": "image.generate",
"status": "active",
"params_schema": {
"resolutions": ["1K"],
"ratios": ["auto", "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "5:4", "4:5", "21:9"],
"max_n": 4,
"seed": true,
"max_images": 14,
"negative_prompt": true,
"max_prompt": 2000
},
"default_params": {"resolution": "1K", "ratio": "1:1", "n": 1},
"prices": {"image:1K": 2},
"available": true
},
{
"id": "nanobanana-pro",
"object": "model",
"created": 1756411279,
"owned_by": "genmux",
"display_name": "Nano Banana Pro",
"description": "Higher fidelity, with 1K, 2K and 4K output.",
"capability": "image.generate",
"status": "active",
"params_schema": {
"resolutions": ["1K", "2K", "4K"],
"ratios": ["auto", "1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "5:4", "4:5", "21:9"],
"max_n": 4,
"seed": true,
"max_images": 14,
"negative_prompt": true,
"max_prompt": 2000
},
"default_params": {"resolution": "1K", "ratio": "1:1", "n": 1},
"prices": {"image:1K": 4, "image:2K": 6, "image:4K": 8},
"available": true
},
{
"id": "qwen3.8-max",
"object": "model",
"created": 1756411279,
"owned_by": "genmux",
"display_name": "Qwen3.8-Max",
"description": "Alibaba Qwen3.8-Max via gateway: flagship Qwen with a 1M-token context.",
"capability": "text.chat",
"status": "active",
"params_schema": {
"tools": true,
"context_tokens": 1000000,
"max_output_tokens": 16384,
"default_max_tokens": 2048
},
"default_params": {
"max_tokens": 2048,
"temperature": 0.7
},
"prices": {
"tokens_in:1M": 138.718,
"tokens_out:1M": 416.161
},
"available": true
}
]
}Цены заданы по тирам разрешения: image:1K, image:2K, image:4K. Модель объявляет, что принимает, в params_schema — resolutions, ratios, max_images (референсные изображения; поля нет — image-to-image не поддерживается) и negative_prompt. В каталоге может оставаться устаревший список sizes и соответствующие цены image:WIDTHxHEIGHT — они нужны только клиентам, которые всё ещё шлют поле size.
У текстовых моделей capability: "text.chat", params_schema с окном контекста, потолком и значением по умолчанию max_tokens и флагами thinking, web_search, vision, tools, а цены заданы ключами tokens_in:1M / tokens_out:1M в юнитах за миллион токенов. У списка object: list, у каждой строки object: model, created и owned_by; GET /v1/models/{id} возвращает одну строку.
Модели и цены
Стоимость задания = юниты за изображение (ниже) × n. Она резервируется при отправке и полностью возвращается при неудаче или отмене.
| Модель | 1K длинная сторона ~1024 px | 2K длинная сторона ~2048 px | 4K длинная сторона ~4096 px |
|---|---|---|---|
nanobanana до 4 изображения за запрос | 2юнита ≈ $0.025 за изображение | — | — |
nanobanana-pro до 4 изображения за запрос | 4юнита ≈ $0.05 за изображение | 6юнитов ≈ $0.075 за изображение | 8юнитов ≈ $0.10 за изображение |
qwen-image-2 до 4 изображения за запрос | 3юнита ≈ $0.038 за изображение | 4юнита ≈ $0.05 за изображение | — |
qwen-image-max до 4 изображения за запрос | 8юнитов ≈ $0.10 за изображение | 9юнитов ≈ $0.113 за изображение | — |
seedream-5 до 4 изображения за запрос | — | 16юнитов ≈ $0.20 за изображение | 18юнитов ≈ $0.225 за изображение |
wan-2-7-image до 4 изображения за запрос | 2юнита ≈ $0.025 за изображение | 3юнита ≈ $0.038 за изображение | — |
Тир задаётся полем resolution, форма — полем ratio. Суммы посчитаны по самому выгодному пакету ($0.013 за юнит). Стоимость = юниты × n; неудачные генерации возвращаются полностью.
Стоимость чат-запроса = токены промпта × входная ставка + токены ответа (включая рассуждение) × выходная ставка, в юнитах за 1M токенов (ниже). Юниты дробные: чат-запрос списывается точно, до трёх знаков после запятой, а баланс и история операций показывают дробные значения. Генерация изображений по-прежнему стоит целое число юнитов за изображение.
| Модель | Контекст | Инструменты | Вход / 1M | Выход / 1M |
|---|---|---|---|---|
doubao-seed-2-pro | 256K | да | 85юнитов $1.063 ≈ $0.0011 / 1K | 408юнитов $5.10 ≈ $0.0051 / 1K |
doubao-seed-2-code | 256K | да | 85юнитов $1.063 ≈ $0.0011 / 1K | 408юнитов $5.10 ≈ $0.0051 / 1K |
doubao-seed-2-lite | 256K | — | 17юнитов $0.213 ≈ $0.0002 / 1K | 85юнитов $1.063 ≈ $0.0011 / 1K |
doubao-seed-2-mini | 256K | — | 2,146юнита $0.027 ≈ $0.00 / 1K | 68юнитов $0.85 ≈ $0.0009 / 1K |
kimi-k3 | 1M | да | 197,028юнита $2.463 ≈ $0.0025 / 1K | 985,815юнита $12.323 ≈ $0.0123 / 1K |
claude-opus-5-5 | 200K | да | 146,88юнита $1.836 ≈ $0.0018 / 1K | 734,4юнита $9.18 ≈ $0.0092 / 1K |
claude-fable-5-1 | 200K | да | 1 700юнитов $21.25 ≈ $0.0213 / 1K | 1 700юнитов $21.25 ≈ $0.0213 / 1K |
gpt-6-astra | 128K | да | 68юнитов $0.85 ≈ $0.0009 / 1K | 340юнитов $4.25 ≈ $0.0043 / 1K |
gpt-5.6-terra | 128K | да | 17юнитов $0.213 ≈ $0.0002 / 1K | 170юнитов $2.125 ≈ $0.0021 / 1K |
qwen3.8-max | 1M | да | 138,718юнита $1.734 ≈ $0.0017 / 1K | 416,161юнита $5.202 ≈ $0.0052 / 1K |
Юниты за 1M токенов; все сообщения запроса — вход, ответ (включая рассуждение) — выход. Суммы посчитаны по самому выгодному пакету ($0.013 за юнит). Если токены не были сгенерированы, ничего не списывается.
Ошибки
Ошибки используют application/problem+json. Ориентируйтесь на code; request_id также возвращается в заголовке X-Request-ID — прилагайте его, когда пишете на support@genmux.tech.
{"type": "…/errors/insufficient_credits", "title": "Payment Required", "status": 402, "code": "insufficient_credits", "detail": "account balance is too low for this request", "request_id": "…"}Исключение: POST /v1/chat/completions (и только он) отвечает в формате OpenAI — {"error": {"message", "type", "code", "param", "request_id"}} — где type один из invalid_request_error, authentication_error, permission_error, insufficient_quota, rate_limit_error, not_found_error, server_error, поэтому логика повторов в OpenAI SDK и агентах для кода распознаёт лимиты и нехватку баланса. Значения code ниже одинаковы на обоих маршрутах.
{"error": {"message": "account balance is too low for this request", "type": "insufficient_quota", "code": "insufficient_credits", "param": null, "request_id": "…"}}| HTTP | code | Когда |
|---|---|---|
| 400 | validation_error | Неверное или отсутствующее поле, неизвестное поле, нет Idempotency-Key. |
| 400 | unsupported_parameter | Чат: поле, которое эндпоинт не поддерживает (n > 1, устаревшее functions, logprobs, image_url у модели без vision, enable_thinking / web_search у модели без них). |
| 400 | tools_unsupported | Чат: tools отправлены модели, у которой в каталоге нет tools: true. |
| 400 | context_length_exceeded | Чат: сообщения (плюс max_tokens) не помещаются в окно контекста модели. Ничего не списывается. |
| 401 | unauthorized | Ключ отсутствует, отозван или истёк. |
| 402 | insufficient_credits | Баланс меньше стоимости задания. Купите юниты в кабинете или напишите на support@genmux.tech. |
| 403 | ip_not_allowed | У ключа есть список разрешённых IP, и вашего адреса в нём нет. |
| 404 | not_found | Неизвестный id задания (или оно принадлежит другому аккаунту). |
| 404 | model_not_found | Неизвестный идентификатор модели. Актуальный каталог — GET /v1/models. |
| 409 | conflict | Задание нельзя отменить в его текущем состоянии. |
| 409 | idempotency_key_reused | Чат: необязательный Idempotency-Key уже использован для другого ответа. |
| 422 | idempotency_key_mismatch | Idempotency-Key повторно использован с другим телом. |
| 429 | rate_limited | Превышен лимит запросов для ключа. Соблюдайте Retry-After. Нужен лимит выше? Напишите на support@genmux.tech. |
| 429 | too_many_inflight | В очереди или в работе больше max_inflight заданий. Дождитесь завершения части из них. |
| 502 | upstream_error | Провайдер модели не ответил или вернул ошибку. За запрос без сгенерированных токенов ничего не списывается; повторите. |
| 502 | json_invalid | Чат: ответ не прошёл response_format даже после автоматического повтора. Оплачиваются обе попытки. |
| 503 | model_unavailable | Модель временно отключена — ничего не списывается. Повторите позже или выберите другую модель. |
| 500 | internal_error | Наша ошибка. Повторите с тем же Idempotency-Key — дважды не спишем. |
Лимиты
У каждого ключа есть лимит запросов в секунду (по умолчанию 10), а у аккаунта — лимит одновременных заданий (по умолчанию 20). При превышении ответ 429 с заголовком Retry-After в секундах. Нужен лимит выше? Напишите на support@genmux.tech.
Вебхуки
Передайте webhook_url (только https, публичный хост) при создании задания. Мы отправляем POST по завершении и повторяем с бэкоффом до 8 попыток, пока вы не вернёте 2xx.
Content-Type: application/json
X-Webhook-Id: 1042
X-Webhook-Timestamp: 1756411279
X-Webhook-Signature: v1=3f7a…
{"type": "generation.succeeded", "id": "…", "status": "succeeded", "error_code": null, "created_at": "…", "finished_at": "…"}Проверяйте подпись секретом вебхуков аккаунта (Кабинет → Настройки): HMAC-SHA256(secret, timestamp + "." + raw_body), в hex, сравнивая со значением после v1=. Во время ротации секрета приходят две подписи через запятую — принимайте любую. Отклоняйте метки времени старше 5 минут.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(secret, headers, rawBody) {
const ts = headers["x-webhook-timestamp"];
const expected = createHmac("sha256", secret).update(ts + "." + rawBody).digest("hex");
return headers["x-webhook-signature"].split(",")
.some((s) => { const v = s.replace(/^v1=/, ""); return v.length === expected.length && timingSafeEqual(Buffer.from(v), Buffer.from(expected)); });
}