API Files
Importez des fichiers de référence image, vidéo ou audio pour les requêtes de génération API Rivya, avec contrôles MIME, limites de taille et tokens de durée.
Dernière révision le 2026/05/11
Utilisez POST /api/v1/files pour importer des médias de référence destinés aux modèles qui ont besoin d'entrées image, vidéo ou audio.
L'API Files sert uniquement aux entrées de référence. Elle ne crée pas de tâches de génération à elle seule. Après l'import, transmettez l'url renvoyée et les métadonnées dans les params du modèle, généralement via params.referenceMediaItems.
Endpoint
POST https://rivya.ai/api/v1/files
GET https://rivya.ai/api/v1/files/{fileId}En-têtes requis :
Authorization: Bearer rvya_sk_...
Content-Type: multipart/form-dataLa clé API doit inclure le scope files:create pour importer et files:read pour récupérer les métadonnées. Les clés API Rivya nouvellement créées incluent les deux scopes par défaut.
Champs multipart
| Champ | Type | Requis | Notes |
|---|---|---|---|
file | binary | oui | Le fichier image, vidéo ou audio à importer. |
kind | string | oui | L'une des valeurs image, video ou audio. |
model | string | non | ID public du modèle. S'il est présent, Rivya vérifie que le modèle accepte ce type de fichier. |
client_request_id | string | non | Votre ID de trace, jusqu'à 128 caractères. |
Utilisez model quand le fichier est destiné à un modèle précis. Cela vous donne une validation MIME et de taille propre au modèle avant l'acceptation du fichier.
Limites d'import
L'API Files utilise la même politique d'import que les imports de référence Rivya.
Limites par défaut :
| Type | Taille maximale par défaut | Types MIME courants |
|---|---|---|
image | 10 MB | image/jpeg, image/png, image/webp |
video | 50 MB | video/mp4, video/quicktime, video/webm |
audio | 10 MB | audio/mpeg, audio/mp4, audio/wav, audio/x-wav, audio/aac, audio/ogg |
Certains modèles ont des limites différentes. Par exemple, certains modèles avec image de référence acceptent des images plus grandes, et certains modèles avec référence vidéo acceptent des fichiers jusqu'au plafond d'import sûr côté edge du produit. Transmettez toujours model lorsque vous connaissez le modèle cible, et lisez la référence API des modèles avant d'accepter les imports utilisateur.
Rivya valide la signature détectée du fichier, pas seulement l'extension du nom de fichier.
Exemple curl
curl https://rivya.ai/api/v1/files \
-H "Authorization: Bearer rvya_sk_..." \
-F "file=@./reference.png" \
-F "kind=image" \
-F "model=nano-banana-2" \
-F "client_request_id=asset-123"Exemple JavaScript
import { readFile } from "node:fs/promises";
const form = new FormData();
const file = new Blob([await readFile("./reference.png")], {
type: "image/png"
});
form.set("file", file, "reference.png");
form.set("kind", "image");
form.set("model", "nano-banana-2");
form.set("client_request_id", "asset-123");
const response = await fetch("https://rivya.ai/api/v1/files", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIVYA_API_KEY}`
},
body: form
});
const uploadedFile = await response.json();
console.log(uploadedFile.id, uploadedFile.url);Exemple Python
import os
import requests
with open("./reference.png", "rb") as file_handle:
response = requests.post(
"https://rivya.ai/api/v1/files",
headers={
"Authorization": f"Bearer {os.environ['RIVYA_API_KEY']}",
},
files={"file": ("reference.png", file_handle, "image/png")},
data={
"kind": "image",
"model": "nano-banana-2",
"client_request_id": "asset-123",
},
timeout=60,
)
uploaded_file = response.json()
print(uploaded_file["id"], uploaded_file["url"])Réponse
{
"id": "file_...",
"object": "file",
"kind": "image",
"file_name": "reference.png",
"mime_type": "image/png",
"size_bytes": 482314,
"url": "https://...",
"duration_seconds": null,
"duration_token": null,
"created_at": "2026-05-11T00:00:00.000Z",
"expires_at": null
}Pour les imports vidéo et audio, duration_seconds peut être renseigné. Quand un modèle exige une vérification de durée, copiez duration_token dans le paramètre de génération associé sous la forme durationToken.
Récupérer les métadonnées d'un fichier
Utilisez GET /api/v1/files/{fileId} pour lire les métadonnées d'un fichier appartenant au même compte Rivya :
curl https://rivya.ai/api/v1/files/file_... \
-H "Authorization: Bearer rvya_sk_..."La réponse utilise la même forme PublicApiFile que l'import. Si le fichier appartient à un autre compte ou n'est plus disponible, l'API renvoie not_found.
Utiliser l'import dans les params de génération
N'envoyez pas de champ files au niveau racine vers POST /api/v1/generations.
Pour les nouvelles intégrations, transmettez le résultat de l'import via params.referenceMediaItems :
{
"model": "nano-banana-2",
"prompt": "Recompose cette photo produit pour une page catalogue éditoriale nette",
"params": {
"referenceMediaItems": [
{
"url": "https://...",
"kind": "image",
"name": "reference.png",
"mimeType": "image/png"
}
]
},
"client_request_id": "order-123-preview"
}Pour une vidéo ou un audio :
{
"url": "https://...",
"kind": "video",
"name": "source.mov",
"mimeType": "video/quicktime",
"durationSeconds": 12.4,
"durationToken": "duration_token_from_files_api"
}Certains anciens paramètres de modèles utilisent encore des champs d'URL propres au modèle. Si la référence API des modèles documente un paramètre spécifique, suivez cette page de modèle au lieu d'inventer un nouveau champ.
Erreurs
L'API Files utilise la même enveloppe d'erreur publique que le reste de l'API Rivya :
{
"error": {
"code": "validation_failed",
"message": "The request is invalid.",
"requestId": "req_..."
}
}Cas courants :
| HTTP | Code | Cause |
|---|---|---|
| 400 | validation_failed | file manquant, kind non pris en charge, type MIME non pris en charge, fichier trop volumineux ou modèle n'acceptant pas le type sélectionné. |
| 401 | api_key_missing / api_key_invalid | Clé API Bearer manquante ou invalide. |
| 403 | api_scope_denied | La clé n'inclut pas files:create ou files:read pour l'action demandée. |
| 429 | rate_limited | Trop d'imports de fichiers dans la minute actuelle. |
| 503 | public_api_disabled | L'API publique est désactivée dans l'environnement actuel. |
Notes de sécurité
Ne stockez pas de clés API complètes dans les navigateurs, clients mobiles, logs, événements analytics ou captures d'écran.
Traitez les URL de fichiers importés et les valeurs duration_token comme du matériel temporaire d'intégration. Utilisez-les seulement pour construire la requête de génération suivante, et ne les exposez pas dans des pages publiques.
Pages associées
Erreurs et limites API
Gérez les codes d'erreur publics de l'API Rivya, les statuts HTTP, les limites de débit, les conflits d'idempotence et les décisions de nouvelle tentative.
Statut de génération
Interrogez les tâches de génération de l'API Rivya par ID de tâche public, lisez les états queued, processing, succeeded et failed, puis consommez les URL de résultat.