Тема
Язык
·5 мин. чтения

Генерация изображений, видео и голоса через единый API

Генерируйте изображения, видео и поддерживаемые голосовые результаты с помощью асинхронных медиазаданий GetVibe: выберите модель, отправьте запрос, проверяйте статус и безопасно сохраняйте результаты.

Генерация изображений, видео и голоса через единый API

GetVibe предоставляет генерацию медиафайлов через асинхронный API задач наряду с API текстовых моделей. Путь для медиа-запросов отличается от chat completions OpenAI: отправьте задачу генерации, получите идентификатор задачи и запросите её статус и результат. У моделей изображений, видео и аудио/голоса разные входные данные и единицы тарификации, поэтому выбирайте модель в каталоге медиа-моделей, а не предполагайте, что для каждой модели подходит одна и та же форма запроса.

Найдите модель и изучите её требования

Используйте каталог медиа-моделей и /v1/models?type=image,video,audio, чтобы увидеть типы медиафайлов, доступные вашей учётной записи. Проверьте точный идентификатор модели, принимаемые входные данные, поддерживаемые параметры, формат вывода и единицу тарификации. Модель изображений может тарифицироваться по параметрам вывода; стоимость видео может зависеть от длительности и разрешения; голосовые модели могут тарифицироваться по длине текста, длительности или другой документированной единице. Не сравнивайте эти цены так, будто все они относятся к текстовым токенам.

gpt-image-2 — одна из моделей изображений в каталоге. На странице модели и в документации по медиафайлам перечислены поддерживаемые соотношения сторон, разрешение, а также параметры генерации и редактирования. У видеомоделей свои входные данные, и обработка может занимать больше времени. Возможности работы с голосом различаются в зависимости от модели; ознакомьтесь с актуальным списком медиа-моделей, прежде чем обещать пользователям конкретную операцию в интерфейсе.

Отправьте задачу генерации изображения

Храните ключ на своём сервере. Ниже приведена документированная асинхронная форма запроса text-to-image: prompt находится на верхнем уровне, а параметры генерации — внутри opts.

curl https://getvibeapi.com/api/media/generate \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Чистая редакционная иллюстрация рабочего стола разработчика, без текста",
    "opts": {"aspect_ratio":"16:9", "resolution":"1K", "mode":"text-to-image"}
  }'

Сохраните полученный jobId вместе с собственной записью пользователя и задачи. Этот запрос запускает генерацию, но не возвращает готовое содержимое изображения непосредственно в ответе.

Опрос статуса или webhook

Для небольшой интеграции опрашивайте endpoint задачи с умеренным интервалом и прекращайте опрос, когда задача достигнет конечного состояния. Состояния включают submitting, processing, success, fail и expired. Опрос каждые несколько миллисекунд увеличивает трафик, но не ускоряет генерацию. Для производственных пакетных процессов настройте документированный webhook и сделайте обработку callback идемпотентной, чтобы повторная доставка не создавала дубликаты ресурсов.

curl "https://getvibeapi.com/api/media/jobs/$JOB_ID" \
  -H "Authorization: Bearer $GETVIBE_API_KEY"

При успешном выполнении получите URL результатов и скопируйте медиафайл в хранилище под вашим контролем, если он должен храниться длительное время. При ошибке сохраните идентификатор задачи для обращения в поддержку и покажите информативное сообщение. Не повторяйте каждый неудачный запрос: недопустимый параметр снова приведёт к ошибке, а повторная генерация может повлечь дополнительную плату.

Для видео и голоса требуется отдельная обработка

Для видео перед отправкой запроса изучите длительность, размер кадра, требования к изображениям для conditioning и поддерживаемые параметры модели. Проверьте удалённые исходные URL и убедитесь, что они доступны. Показывайте пользователю ход выполнения задачи, поскольку рендеринг может занимать больше времени, чем генерация текста. Для пакетных процессов используйте документированный поток webhook, а не удерживайте интерактивную страницу открытой.

Для голоса и аудио различайте генерацию речи, транскрибацию и понимание аудио. Для них используются разные модальности входных и выходных данных. Сопоставьте endpoint и payload с карточкой модели, задайте ограничения на текст или длительность, если они доступны, и сохраняйте возвращённое аудио в формате, поддерживаемом вашим проигрывателем. Не обещайте, что каждая медиа-модель способна генерировать голос.

Бюджет и обработка ошибок

Перед запуском пакетного процесса проверьте текущую цену медиа-модели и рассчитайте стоимость в её фактической единице тарификации. Цена текстовой модели не является ориентиром для генерации изображений или видео. Выполните один тестовый запрос с теми же разрешением, длительностью или настройками голоса, которые планируется использовать в production. Записывайте идентификатор задачи, модель, параметры, длительность, конечное состояние и списанное потребление. Установите максимальный размер пакета и ручную проверку для дорогостоящих результатов или результатов, предназначенных для пользователей.

Не включайте prompts и URL медиафайлов в общие журналы, если это не разрешено вашей политикой конфиденциальности. Редактируйте учётные данные, установите ограничения на загрузку и не предоставляйте приватные сгенерированные ресурсы в виде общедоступных URL. При редактировании храните исходный ресурс отдельно до проверки результата.

Проверьте всё перед выходом в production

  • Подтвердите точный идентификатор модели, модальность и требования к входным данным.
  • Храните API-ключ на сервере.
  • Используйте документированный prompt верхнего уровня и параметры, специфичные для модели.
  • Сохраняйте идентификаторы задач и сделайте обработку polling/webhook идемпотентной.
  • Определите поведение при ошибке и истечении срока действия.
  • Рассчитывайте бюджет по фактической единице тарификации модели.
  • Копируйте успешные результаты в хранилище, если их необходимо сохранять.

Перед выпуском ознакомьтесь с разделами генерация медиафайлов, webhook для медиафайлов и медиа-модели. Общедоступный список моделей и поддерживаемые параметры могут меняться; источниками актуальной информации для вашей учётной записи служат эти страницы и актуальный каталог.

Безопасно обрабатывайте исходные ресурсы

Для преобразования изображения или видео с учётом изображения используйте метод загрузки или URL, документированный для этой модели. Убедитесь, что исходный URL общедоступен для сервиса генерации и не требует сеанса входа в ваш браузер. Не встраивайте долгоживущие подписанные URL в prompts, которые могут попасть в журналы. Перед приёмом пользовательских файлов установите в собственном приложении проверки размера загрузки и content-type.

При генерации на основе изображения, предоставленного пользователем, сохраняйте исходный файл и отслеживайте требования к согласию и срокам хранения. В сгенерированном результате могут присутствовать узнаваемые детали исходного изображения; перед публикацией применяйте правила конфиденциальности и модерации вашего продукта.

Проектируйте интерфейс с учётом состояний задач

Показывайте состояние submitted после возврата идентификатора задачи, состояние processing во время работы сервиса и понятные конечные состояния success, failure или expiration. Пользователь должен иметь возможность безопасно покинуть страницу, если задача продолжается асинхронно, а затем восстановить статус через поиск собственной сохранённой записи о задаче. Не допускайте двойной отправки при двойном нажатии: отключайте элемент отправки или используйте собственную защиту от повторов.

Для пакетного процесса показывайте количества завершённых, неудачных и ожидающих задач отдельно. Один общий индикатор загрузки не позволяет понять, выполняется ли длительная видеозадача нормально или зависла. Используйте ограниченное экспоненциальное увеличение интервала опроса и переходите на документированный путь webhook при увеличении размера пакета.

Храните результаты с учётом срока хранения

Не считайте возвращённый URL результата постоянным хранилищем, если в документации по медиафайлам прямо не сказано обратное. При необходимости долгосрочного доступа скачивайте успешный результат в своё хранилище, а затем сохраняйте новый идентификатор объекта в базе данных. Применяйте контроль доступа к сгенерированным файлам и определите поведение удаления, когда пользователь удаляет проект.

Записывайте идентификатор модели, параметры, версию prompt, идентификатор задачи, объект результата, конечный статус и списанное потребление. Это позволит ответить на последующий вопрос в поддержку, не записывая полный конфиденциальный prompt и не раскрывая URL медиафайла всей команде.

API генерации изображенийAPI генерации видеоAPI генерации голосамедиазадания GetVibe

Попробуйте GetVibe API бесплатно

GPT, Claude, Gemini и другие модели через единый API, совместимый с OpenAI. Оплата в USD картой или криптовалютой.

Похожие статьи

Генерация изображений, видео и голоса через единый API | GetVibe API