Руководство по API изображений и видео
Используйте OOMOL Fusion API из доверенного backend для генерации и редактирования изображений и создания видео. Каждый поставщик сохраняет поддерживаемые форматы запросов и ответов. Поддержка ограничена выбранными моделями и операциями, а не всеми API поставщика.
Создайте ключ API
Создайте личный ключ в OOMOL Console и задайте указанную ниже переменную окружения на сервере. Используйте ключ OOMOL как apiKey SDK или HTTP Bearer token. Ключ поставщика в этих примерах не нужен. Не включайте ключ в браузерный код, публичные репозитории или журналы.
export FUSION_API_TOKEN="<your-oomol-api-key>"
Выберите адрес
Адрес сервиса — https://fusion-api.oomol.com. Используйте полный Base URL поставщика вместе с путём версии. Не подставляйте адрес Connector или ProjectConnector. Перед платным запросом проверьте доступность модели и цены.
| Поставщик | Base URL |
|---|---|
| OpenAI Images | https://fusion-api.oomol.com/v1/provider/openai/v1 |
| Seedream | https://fusion-api.oomol.com/v1/provider/seedream/api/v3 |
| Seedance | https://fusion-api.oomol.com/v1/provider/seedance/api/v3 |
| Wanx | https://fusion-api.oomol.com/v1/provider/wanx/api/v1 |
| Kling | https://fusion-api.oomol.com/v1/provider/kling/ |
| MiniMax | https://fusion-api.oomol.com/v1/provider/minimax/ |
Запустите пример
Установите только нужный пакет. Сохраните пример в example.ts и запустите в серверной среде TypeScript. Указанные версии соответствуют локальным тестам репозитория и не гарантируют совместимость всех версий SDK. С действительными учётными данными и доступным адресом примеры запускают реальную генерацию.
OpenAI Images
Генерация и редактирование изображений; без других API OpenAI.
npm install openai@7.23.0
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.FUSION_API_TOKEN,
baseURL: "https://fusion-api.oomol.com/v1/provider/openai/v1",
maxRetries: 0,
timeout: 1_080_000,
});
const result = await client.images.generate({
model: "gpt-image-2",
prompt: "A ceramic mug on a wooden table",
size: "1536x864",
quality: "medium",
});
console.log(result);
Seedream
Генерация изображений, референсы и отдельные операции SSE.
npm install @volcengine/ark-runtime@1.0.11
import { ArkRuntimeClient } from "@volcengine/ark-runtime";
const client = new ArkRuntimeClient({
apiKey: process.env.FUSION_API_TOKEN,
baseURL: "https://fusion-api.oomol.com/v1/provider/seedream/api/v3",
retryTimes: 0,
timeout: 125_000,
});
const result = await client.generateImages({
model: "doubao-seedream-5-0-260128",
prompt: "A ceramic mug on a wooden table",
size: "2K",
response_format: "url",
});
console.log(result);
Seedance
Генерация видео и запрос состояния задач.
npm install @volcengine/ark-runtime@1.0.11
import { ArkRuntimeClient } from "@volcengine/ark-runtime";
const client = new ArkRuntimeClient({
apiKey: process.env.FUSION_API_TOKEN,
baseURL: "https://fusion-api.oomol.com/v1/provider/seedance/api/v3",
retryTimes: 0,
timeout: 125_000,
});
const task = await client.createContentGenerationTask({
model: "doubao-seedance-2-0-260128",
content: [{ type: "text", text: "A boat on the ocean" }],
duration: 5,
resolution: "720p",
});
const status = await client.getContentGenerationTask(task.id);
console.log(task.id, status);
Wanx
Генерация видео и запрос состояния задач.
npm install dashscope-sdk-official@1.26.0
import { Configuration, VideoSynthesis } from "dashscope-sdk-official";
const client = new VideoSynthesis(new Configuration({
apiKey: process.env.FUSION_API_TOKEN,
basePath: "https://fusion-api.oomol.com/v1/provider/wanx/api/v1",
}));
const task = await client.asyncCall({
model: "wan3.0-video",
prompt: "A boat on the ocean",
resolution: "1080P",
duration: 5,
});
const status = await client.fetch(task.output.task_id);
console.log(task.output.task_id, status);
Kling
Генерация видео и запрос состояния задач.
npm install ky@1.11.0
import ky from "ky";
const client = ky.create({
prefixUrl: "https://fusion-api.oomol.com/v1/provider/kling/",
headers: { Authorization: `Bearer ${process.env.FUSION_API_TOKEN}` },
retry: 0,
redirect: "error",
timeout: 30_000,
});
const task = await client.post("text-to-video/kling-3.0-turbo", {
json: {
prompt: "A boat on the ocean",
settings: { duration: 5, resolution: "720p", aspect_ratio: "16:9" },
},
}).json<{ data: { id: string } }>();
const status = await client.get("tasks", {
searchParams: { task_ids: task.data.id },
}).json();
console.log(task.data.id, status);
MiniMax
Генерация видео и запрос состояния задач.
npm install ky@1.11.0
import ky from "ky";
const client = ky.create({
prefixUrl: "https://fusion-api.oomol.com/v1/provider/minimax/",
headers: { Authorization: `Bearer ${process.env.FUSION_API_TOKEN}` },
retry: 0,
redirect: "error",
timeout: 30_000,
});
const task = await client.post("v2/video_generation", {
json: {
model: "MiniMax-H3",
content: [{ type: "text", text: "A boat on the ocean" }],
duration: 5,
resolution: "768P",
ratio: "16:9",
},
}).json<{ task_id: string }>();
const status = await client.get(
`v2/query/video_generation/${encodeURIComponent(task.task_id)}`,
).json();
console.log(task.task_id, status);
Получите результат видео
Примеры видео создают задачу и проверяют её один раз. Сохраните ID. Успешное создание означает приём задачи, а не готовность видео. Запрашивайте ту же задачу с той же учётной записью OOMOL через интервалы до конечного состояния. При успехе или ошибке остановитесь и прочитайте результат. Сбой запроса состояния не доказывает сбой генерации. Не создавайте задачу заново для проверки прогресса.
Обработайте ошибки и повторы
Проверяйте HTTP-ошибки и состояние задачи. Проверки авторизации и баланса могут вернуть ошибки шлюза другого формата. При ошибке авторизации проверьте ключ OOMOL, при проблемах с правами или балансом — аккаунт и оплату, при неверном вводе — модель и параметры. При ограничении запросов сократите параллелизм и следуйте подсказкам о повторе.
Тайм-аут, разрыв связи или ошибка сервера при создании могут оставить результат неизвестным. Сохраните ID задачи, запроса и ошибку; по возможности проверьте существующую задачу. Не повторяйте генерацию автоматически: это может создать ещё одну платную задачу. Примеры OpenAI и Ark отключают повторы SDK, ky также отключает перенаправления. DashScope использует проверенную конфигурацию. Истечение лимита ожидания приложения не должно автоматически запускать новую генерацию.
Файлы, потоки и результаты
Ограничения загрузки, референсов и потоковой выдачи зависят от поставщика. Пример OpenAI охватывает только Images API, без чата, Responses и других API. Seedream поддерживает отдельные операции SSE; показанный API изображений OpenAI синхронный. Получение части событий не равнозначно получению события завершения.
Скачивайте медиа по возвращённым URL отдельным клиентом без заголовка OOMOL Authorization. Не считайте ссылки постоянными. Отключение клиента не гарантирует отмену принятой генерации. По неподдерживаемым операциям или неизвестным результатам обращайтесь в поддержку, указав ID запроса или задачи, без секретных данных.
Вернуться к обзору API изображений и видео.