Guide d’intégration des API Image et Vidéo
Utilisez OOMOL Fusion API depuis un backend de confiance pour générer et retoucher des images ou créer des vidéos. Chaque fournisseur conserve les formats de requête et de réponse pris en charge. La compatibilité concerne des modèles et opérations précis, pas toutes ses API.
Créer une clé API
Créez une clé personnelle dans OOMOL Console, puis définissez la variable d’environnement ci-dessous côté serveur. Utilisez cette clé OOMOL comme apiKey du SDK ou comme jeton HTTP Bearer. Les exemples ne nécessitent pas de clé du fournisseur. Ne placez pas la clé dans le navigateur, un dépôt public ou les journaux.
export FUSION_API_TOKEN="<your-oomol-api-key>"
Choisir une adresse
Le service utilise https://fusion-api.oomol.com. Utilisez la Base URL complète du fournisseur, avec son chemin de version. Ne la remplacez pas par celle de Connector ou ProjectConnector. Avant une requête payante, confirmez la disponibilité du modèle et consultez les tarifs.
| Fournisseur | 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/ |
Exécuter un exemple
Installez uniquement le paquet nécessaire. Enregistrez l’exemple dans example.ts et exécutez-le dans un environnement TypeScript côté serveur. Les versions indiquées correspondent aux tests locaux du dépôt et ne garantissent pas toutes les versions de SDK. Avec des identifiants valides et un point d’accès disponible, ces exemples déclenchent une génération réelle.
OpenAI Images
Génération et retouche d’images ; aucune autre 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
Génération d’images, références et certaines sorties 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
Génération vidéo et consultation des tâches.
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
Génération vidéo et consultation des tâches.
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
Génération vidéo et consultation des tâches.
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
Génération vidéo et consultation des tâches.
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);
Consulter les résultats vidéo
Les exemples vidéo créent une tâche puis la consultent une fois. Enregistrez son identifiant. La création réussie signifie que la tâche est acceptée, pas que la vidéo est prête. Consultez-la avec la même identité OOMOL, en espaçant les requêtes, jusqu’à un état final. Arrêtez après succès ou échec et lisez le résultat ou l’erreur. Une consultation échouée ne prouve pas l’échec de la génération. Ne recréez pas la tâche pour vérifier sa progression.
Gérer les erreurs et nouvelles tentatives
Vérifiez les erreurs HTTP et l’état de la tâche. Les contrôles d’identité et de solde peuvent renvoyer des erreurs de passerelle au format différent. Vérifiez la clé OOMOL en cas d’échec d’authentification, le compte et la facturation pour les droits ou le solde, et les paramètres pour les entrées invalides. En cas de limite, réduisez la concurrence et suivez les indications de reprise fournies.
Un délai dépassé, une déconnexion ou une erreur serveur peut laisser le résultat incertain. Conservez les identifiants et les erreurs ; consultez la tâche existante si possible. Ne renvoyez pas automatiquement la génération, car cela peut créer une autre tâche payante. Les exemples OpenAI et Ark désactivent les reprises SDK ; ky désactive aussi les redirections. DashScope utilise la configuration testée. Une limite d’attente applicative ne doit pas entraîner une nouvelle création automatique.
Fichiers, streaming et résultats
Les limites des imports, références et flux varient selon le fournisseur. L’exemple OpenAI couvre uniquement Images API, pas le chat, Responses ou les autres API. Seedream prend en charge certaines opérations SSE ; l’entrée image OpenAI présentée est synchrone. Recevoir des événements partiels ne signifie pas avoir reçu l’événement final.
Téléchargez les URL de médias avec un client séparé, sans en-tête OOMOL Authorization. Ne supposez pas que les liens sont permanents. La déconnexion ne garantit pas l’annulation d’une génération acceptée. Pour une opération non prise en charge ou un résultat incertain, contactez le support avec les identifiants de requête ou de tâche, sans secrets.
Revenir à la présentation des API Image et Vidéo.