genmux API теперь доступен всем. Читать документацию →
genmux API

Справочник

GET /v1/account

curl -s https://api.genmux.tech/v1/account -H "Authorization: Bearer $API_KEY"
Response · 200 OK
{
  "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
Response · 200 OK
{
  "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 ниже одинаковы на обоих маршрутах.

Chat route · OpenAI envelope
{"error": {"message": "account balance is too low for this request", "type": "insufficient_quota", "code": "insufficient_credits", "param": null, "request_id": "…"}}
HTTPcodeКогда
400validation_errorНеверное или отсутствующее поле, неизвестное поле, нет Idempotency-Key.
400unsupported_parameterЧат: поле, которое эндпоинт не поддерживает (n > 1, устаревшее functions, logprobs, image_url у модели без vision, enable_thinking / web_search у модели без них).
400tools_unsupportedЧат: tools отправлены модели, у которой в каталоге нет tools: true.
400context_length_exceededЧат: сообщения (плюс max_tokens) не помещаются в окно контекста модели. Ничего не списывается.
401unauthorizedКлюч отсутствует, отозван или истёк.
402insufficient_creditsБаланс меньше стоимости задания. Купите юниты в кабинете или напишите на support@genmux.tech.
403ip_not_allowedУ ключа есть список разрешённых IP, и вашего адреса в нём нет.
404not_foundНеизвестный id задания (или оно принадлежит другому аккаунту).
404model_not_foundНеизвестный идентификатор модели. Актуальный каталог — GET /v1/models.
409conflictЗадание нельзя отменить в его текущем состоянии.
409idempotency_key_reusedЧат: необязательный Idempotency-Key уже использован для другого ответа.
422idempotency_key_mismatchIdempotency-Key повторно использован с другим телом.
429rate_limitedПревышен лимит запросов для ключа. Соблюдайте Retry-After. Нужен лимит выше? Напишите на support@genmux.tech.
429too_many_inflightВ очереди или в работе больше max_inflight заданий. Дождитесь завершения части из них.
502upstream_errorПровайдер модели не ответил или вернул ошибку. За запрос без сгенерированных токенов ничего не списывается; повторите.
502json_invalidЧат: ответ не прошёл response_format даже после автоматического повтора. Оплачиваются обе попытки.
503model_unavailableМодель временно отключена — ничего не списывается. Повторите позже или выберите другую модель.
500internal_errorНаша ошибка. Повторите с тем же Idempotency-Key — дважды не спишем.

Лимиты

У каждого ключа есть лимит запросов в секунду (по умолчанию 10), а у аккаунта — лимит одновременных заданий (по умолчанию 20). При превышении ответ 429 с заголовком Retry-After в секундах. Нужен лимит выше? Напишите на support@genmux.tech.

Вебхуки

Передайте webhook_url (только https, публичный хост) при создании задания. Мы отправляем POST по завершении и повторяем с бэкоффом до 8 попыток, пока вы не вернёте 2xx.

POST <webhook_url>
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 минут.

Node.js
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)); });
}