GoRouter

Images, audio и video

JSON-запросы для изображений, речи, транскрибации и видео.

Задача

Вызвать media-модель через подходящий endpoint.

Рабочий пример

Транскрибация принимает аудио в base64:

{
  "model": "openai/whisper-large-v3",
  "input_audio": {
    "data": "BASE64_AUDIO",
    "format": "wav"
  }
}

Синтез речи:

{
  "model": "openai/tts-1",
  "input": "Добро пожаловать в GoRouter",
  "voice": "alloy",
  "format": "mp3"
}

Генерация аудио выполняется через /chat/completions. Для моделей, которые возвращают звук, запросите обе выходные модальности:

{
  "model": "google/lyria-3-pro-preview",
  "messages": [
    {
      "role": "user",
      "content": "Двухминутная атмосферная электронная песня без вокала"
    }
  ],
  "modalities": ["text", "audio"]
}

У музыкальных моделей с фиксированной ценой /song или /clip нет настроек голоса: GoRouter определяет такой контракт по данным каталога, не по ID модели, и не отправляет TTS-параметр audio. Текстовая часть ответа может содержать слова и структуру композиции, а сама запись возвращается отдельно в choices[0].message.audio.data как base64. В веб-чате она отображается аудиоплеером.

Разговорные audio-модели с настраиваемым голосом используют тот же endpoint, но дополнительно принимают конфигурацию:

{
  "model": "openai/gpt-audio-mini",
  "messages": [{ "role": "user", "content": "Поздоровайся дружелюбно" }],
  "modalities": ["text", "audio"],
  "audio": { "voice": "alloy", "format": "mp3" }
}

Это не то же самое, что TTS: модели с output-модальностью speech вызываются через /audio/speech и возвращают бинарный файл, тогда как output-модальность audio работает через Chat Completions и возвращает текст и звук.

Видео можно запускать не только из текста, но и из изображений. Для моделей, которые публикуют поддержку ключевых кадров, используйте frame_images:

{
  "model": "minimax/hailuo-3-max",
  "duration": 5,
  "resolution": "768p",
  "aspect_ratio": "16:9",
  "frame_images": [
    {
      "type": "image_url",
      "image_url": { "url": "data:image/png;base64,..." },
      "frame_type": "first_frame"
    }
  ]
}

prompt в таком запросе необязателен. URL изображения может быть HTTPS-ссылкой или data URL. Если модель поддерживает оба типа кадров, первое вложение в чате становится first_frame, второе — last_frame. Для модели только с first_frame можно приложить не более одного изображения.

Если видеомодель принимает изображения, но не объявляет ключевые кадры, чат передаёт вложения как input_references для общего визуального ориентира. Это не гарантирует поддержку конкретным провайдером: окончательный набор параметров по-прежнему определяется каталогом и документацией выбранной модели.

Важные параметры

  • /images принимает JSON с model и prompt.
  • /audio/speech возвращает бинарный аудиофайл.
  • /audio/transcriptions принимает JSON с input_audio.data и input_audio.format.
  • Audio-output модели вызываются через /chat/completions с modalities: ["text", "audio"]; звук приходит в message.audio или delta.audio.
  • /videos создаёт задачу; состояние проверяется через /videos/{jobId}, файл — через /videos/{jobId}/content.
  • Допустимые frame_type, длительность, разрешение и соотношение сторон берутся из актуальных возможностей модели, без списка исключений по ID.
  • В настройках видеомодели поле «Звук в видео» показывается только тогда, когда модель объявляет поддержку generate_audio. Для моделей без этой возможности, включая MiniMax H3 Max, параметр не отправляется.

Ответ

Images, transcription и audio-output Chat Completions возвращают JSON. Speech и video content возвращают бинарные данные с соответствующим Content-Type. Video create возвращает ID задачи и локальные polling/content URL.

Ошибки и ограничения

  • Форматы, размеры, голоса и длительность зависят от модели.
  • Музыкальные модели работают в один ход: новая генерация использует только текущий prompt, а не историю предыдущих песен.
  • Для фиксированной цены песни или клипа GoRouter резервирует опубликованную стоимость операции; для token-priced audio — максимальную стоимость выходного аудио по лимиту токенов. Неизвестный тариф по-прежнему отклоняется до отправки запроса.
  • Возможность генерации звука вместе с видео также зависит от модели и данных video-каталога.
  • Генерация видео асинхронна: не скачивайте content до готового состояния задачи.
  • Base64 увеличивает размер аудио; учитывайте лимит тела HTTP-запроса.

На этой странице