Créer une génération
Soumettez des tâches de génération asynchrones à l'API Rivya avec model, prompt, params, Idempotency-Key et champs de réponse publics.
Dernière révision le 2026/08/25
Utilisez POST /api/v1/generations pour soumettre une tâche de génération asynchrone d'image, de vidéo ou d'audio.
Pour les modèles de chat, utilisez API Chat. POST /api/v1/generations ne crée pas de sessions de chat ni de messages assistant.
Endpoint
POST https://rivya.ai/api/v1/generationsEn-têtes requis :
Authorization: Bearer rvya_sk_...
Content-Type: application/jsonEn-tête recommandé :
Idempotency-Key: your-unique-request-keyCorps de requête
{
"model": "z-image",
"prompt": "Image produit éditoriale nette sur fond studio doux",
"params": {
"aspect_ratio": "1:1"
},
"client_request_id": "order-123-preview"
}Champs :
model: ID public du modèle requisprompt: texte du prompt, requis par de nombreux modèlesparams: objet de paramètres propre au modèleclient_request_id: ID de trace optionnel provenant de votre système
Lisez la référence API des modèles pour les params propres à chaque modèle.
Fichiers de référence dans params
Pour les modèles qui acceptent des médias de référence importés, appelez d'abord API Files. Transmettez ensuite le résultat de l'import via les params du modèle ; n'ajoutez pas de champ files au niveau racine de la requête de génération.
Utilisez params.referenceMediaItems pour les nouvelles intégrations :
{
"model": "nano-banana-2-lite",
"prompt": "Recompose cette photo produit pour une page catalogue éditoriale nette",
"params": {
"referenceMediaItems": [
{
"url": "https://...",
"kind": "image",
"name": "reference.png",
"mimeType": "image/png",
"width": 1024,
"height": 1024,
"sizeBytes": 482314,
"imageDimensionsToken": "image_dimensions_token_from_files_api"
}
]
}
}Pour les entrées audio ou vidéo qui exigent une vérification de durée, incluez le duration_token renvoyé par /api/v1/files sous forme de durationToken dans l'entrée referenceMediaItems associée.
Chaque image de référence Image5 exige les valeurs width, height, size_bytes et image_dimensions_token de la réponse d'origine de l'API Files liée au modèle, transmises sous les noms width, height, sizeBytes et imageDimensionsToken. Un token manquant, expiré, associé à d'autres données ou inventé par le client entraîne un rejet avant la création de la tâche et la réservation des crédits. Layer Decomposition exige en plus exactement une image respectant les limites géométriques documentées.
Grok Imagine Image 2.0 utilise le même contrat de métadonnées d'image signées. N'envoyez aucun élément de référence pour la génération texte-vers-image ; pour l'édition d'image standard, envoyez 1 à 5 éléments JPEG, PNG ou WebP uniques et signés. La génération texte-vers-image accepte 1:1, 2:3, 3:2, 16:9 ou 9:16 ; l'édition d'image accepte aussi auto. Segment Map et Segment Edit ne sont pas des modes appelables via l'API publique.
Chaque vidéo de référence Video8 exige les valeurs duration_seconds, duration_token, video_width, video_height, frames_per_second, video_bitrate_mbps, video_file_size_bytes et video_metadata_token de la réponse d'origine liée au modèle. Transmettez-les sous les noms durationSeconds, durationToken, width, height, framesPerSecond, videoBitrateMbps, sizeBytes et videoMetadataToken. Les deux tokens signés sont vérifiés avant la création de la tâche et la réservation des crédits.
Wan 3.0 utilise trois valeurs seedance_scene mutuellement exclusives. text n'accepte aucun média importé ; frames exige une première image et autorise une dernière image facultative ; reference accepte un ensemble signé d'images, de vidéos et d'audio, mais l'audio ne peut pas être le seul média. Toutes les URL de référence doivent provenir d'imports Files API d'origine liés au modèle. Les raccourcis fichier-vers-vidéo et lien-vers-vidéo restent indisponibles.
Définissez variant sur standard ou prime, resolution sur 480P, 720P ou 1080P, et aspect_ratio sur adaptive, 16:9, 4:3, 1:1, 3:4 ou 9:16. duration accepte les nombres entiers de 2 à 30, ou -1 pour la durée intelligente ; audio contrôle l'audio créé par le modèle et seed accepte les valeurs de 0 à 2147483647. Le prompt, une fois les espaces de début et de fin supprimés, doit contenir entre 1 et 20 000 caractères.
Wan 3.0 Standard réserve 8, 16 ou 32 crédits par seconde de sortie demandée en 480P, 720P ou 1080P. Prime réserve 12,2, 25,2 ou 50,4 crédits par seconde. Rivya arrondit une seule fois la réservation cumulée à l'entier supérieur ; la durée intelligente réserve 30 secondes. Une utilisation réelle valide qui ne dépasse pas la réservation est réglée et la différence est remboursée. Si l'utilisation réelle est absente, invalide ou supérieure, la réservation est conservée et passe en rapprochement, sans débit supplémentaire masqué.
En mode référence Wan 3.0, envoyez au maximum 10 images, 5 vidéos et 5 clips audio. Chaque vidéo ou clip audio doit durer de 1 à 15 secondes, et chaque type possède sa propre limite cumulée de 15 secondes. duration=-1 ne peut pas être utilisé avec une vidéo de référence ; avec une entrée vidéo, la durée vérifiée de la vidéo d'entrée plus la durée de sortie demandée ne doit pas dépasser 30 secondes.
Exemple de requête Video8 pour une tâche de synchronisation labiale avec vidéo et audio :
{
"model": "volcengine-video-lip-sync",
"prompt": "",
"params": {
"mode": "lite",
"separate_vocal": "false",
"open_scenedet": "false",
"referenceMediaItems": [
{
"url": "https://.../source.mov",
"kind": "video",
"name": "source.mov",
"mimeType": "video/quicktime",
"durationSeconds": 12.4,
"durationToken": "duration_token_from_files_api",
"width": 1920,
"height": 1080,
"framesPerSecond": 30,
"videoBitrateMbps": 8.5,
"sizeBytes": 26214400,
"videoMetadataToken": "video_metadata_token_from_files_api"
},
{
"url": "https://.../dialogue.wav",
"kind": "audio",
"name": "dialogue.wav",
"mimeType": "audio/wav",
"durationSeconds": 12.4,
"durationToken": "audio_duration_token_from_files_api"
}
]
}
}Exemple curl
curl https://rivya.ai/api/v1/generations \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: product-preview-001" \
-d '{
"model": "z-image",
"prompt": "Image produit éditoriale nette sur fond studio doux",
"params": {
"aspect_ratio": "1:1"
}
}'Exemple JavaScript
const response = await fetch("https://rivya.ai/api/v1/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIVYA_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "product-preview-001"
},
body: JSON.stringify({
model: "z-image",
prompt: "Image produit éditoriale nette sur fond studio doux",
params: { aspect_ratio: "1:1" }
})
});
const generation = await response.json();
console.log(generation.id, generation.status);Exemple Python
import os
import requests
response = requests.post(
"https://rivya.ai/api/v1/generations",
headers={
"Authorization": f"Bearer {os.environ['RIVYA_API_KEY']}",
"Content-Type": "application/json",
"Idempotency-Key": "product-preview-001",
},
json={
"model": "z-image",
"prompt": "Image produit éditoriale nette sur fond studio doux",
"params": {"aspect_ratio": "1:1"},
},
timeout=30,
)
generation = response.json()
print(generation["id"], generation["status"])Réponse
{
"id": "task_public_id",
"status": "queued",
"model": "z-image",
"reserved_credits": 1,
"final_credits": 0,
"created_at": "2026-05-10T00:00:00.000Z",
"updated_at": "2026-05-10T00:00:00.000Z",
"result": null,
"error": null
}Enregistrez l'id et interrogez le statut de génération. Si vous configurez les webhooks API, Rivya peut aussi envoyer un événement signé generation.succeeded ou generation.failed lorsque la tâche atteint un état terminal.
Idempotence
Utilisez Idempotency-Key pour les nouvelles tentatives. Si la même clé et le même corps de requête sont rejoués, Rivya peut renvoyer la réponse publique stockée au lieu de créer une tâche en double.
Si la même clé est réutilisée avec une entrée différente, l'API renvoie idempotency_conflict.
Pages associées
Référence API des modèles
Consultez les ID de modèles API Rivya, la disponibilité, les modes pris en charge, les tableaux de paramètres, les limites de prompt, les règles de médias de référence et les liens de détail des modèles.
API Chat
Utilisez l'API Chat de Rivya pour des tours sans streaming ou en SSE, des sessions créées par l'API, des pièces jointes image file_id et un règlement des crédits basé sur les tokens.