Démarrage rapide
Créez une tâche asynchrone et gérez l'interrogation, la complétion, l'échec et les callbacks.
RunAPI utilise des Tasks pour la génération asynchrone d’images, de vidéos, d’audio et de musique. Une requête de création répond rapidement ; votre application interroge ensuite la Task ou reçoit les événements de callback listés dans la référence API de cet endpoint.
Créer une tâche
Choisissez un modèle et un endpoint dans le Catalog, puis envoyez les entrées requises par l’endpoint. Cet exemple démarre une tâche Flux 2 de texte vers image :
curl -X POST "https://runapi.ai/api/v1/flux_2/text_to_image" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Idempotency-Key: 8c8ba3c9-0ce0-4bbd-a9a7-bf59ab639286" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-2-pro-text-to-image",
"prompt": "A product photograph on a clean studio background"
}'
Une requête asynchrone acceptée renvoie 202 Accepted avec un identifiant de tâche :
{
"id": "task_id",
"status": "processing"
}
Stockez id avec votre enregistrement applicatif. C’est l’identifiant stable
utilisé pour l’interrogation, le support et la réconciliation des callbacks.
Empêcher la création de tâches en double
Les endpoints de création de tâche acceptent un en-tête optionnel Idempotency-Key avec
une valeur opaque pouvant aller jusqu’à 512 caractères. Générez une valeur par
tâche logique et conservez-la avec la requête jusqu’à ce que vous sachiez si elle a été
acceptée.
Si un délai d’attente ou une panne de connexion laisse le résultat inconnu, réessayez la même requête de création de tâche avec la même clé. RunAPI retourne la tâche originale au lieu d’en créer une nouvelle et de la facturer. La réutilisation d’une clé avec une requête de création de tâche différente retourne 409 Conflict. Générez une nouvelle clé pour une nouvelle tâche intentionnelle, et n’utilisez pas X-Client-Request-Id comme clé.
Récupérer une requête synchrone interrompue
Les endpoints synchrones lents maintiennent normalement la connexion ouverte et retournent la même réponse terminale qu’auparavant. Aucune modification d’interrogation n’est requise pour les intégrations existantes.
Pour un budget de connexion intentionnellement plus court, envoyez Prefer: wait=N.
Si la tâche est toujours en cours après ce budget explicite, RunAPI renvoie
202 Accepted avec le même id de tâche, une URL Location opaque pour
la récupération, et Retry-After pour le délai de requête suggéré. Suivez
Location exactement plutôt que de construire une URL de résultat. Un résultat de
tâche terminée préserve le statut HTTP terminal, les en-têtes autorisés, le type de
contenu et le corps ; décodez response.body selon
response.content_type, qui n’est pas toujours JSON.
Interroger une tâche
Ajoutez l’identifiant de tâche au même chemin de point de terminaison :
curl "https://runapi.ai/api/v1/flux_2/text_to_image/task_id" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Continuez tant que status est processing. Utilisez un backoff borné entre
les requêtes plutôt qu’une interrogation continue. Une tâche devient terminale lorsque
son statut est completed ou failed.
Gérer la complétion
Une réponse completed inclut l’id de la tâche, le status terminal et
les champs de résultat spécifiques au point de terminaison. Conservez le résultat dont vous avez besoin et
arrêtez l’interrogation. Consultez la référence API du point de terminaison pour connaître la forme exacte du résultat
plutôt que de supposer que chaque point de terminaison multimédia renvoie les mêmes champs.
Gérer les échecs
Une réponse failed inclut l’id de la tâche, le status terminal et un
error fourni par RunAPI lorsqu’il est disponible. Arrêtez l’interrogation, enregistrez
l’identifiant et l’erreur, et ne réessayez que lorsque votre application a
classifié l’échec comme transitoire. Une nouvelle tentative crée un nouvel identifiant de tâche.
Recevoir un callback
Ajoutez un callback_url HTTPS public à la requête de création lorsque vous souhaitez
que RunAPI envoie les événements de rappel documentés pour ce point de terminaison :
{
"model": "flux-2-pro-text-to-image",
"prompt": "A product photograph on a clean studio background",
"callback_url": "https://your-domain.com/webhooks/runapi"
}
Chaque corps de rappel correspond à un événement de cycle de vie dans la référence
API du point de terminaison et omet les détails de facturation liés à l’interrogation. Les rappels
terminaux incluent les mêmes champs de résultat que les réponses d’interrogation terminales ; certains
points de terminaison envoient également des rappels processing documentés. Renvoyez
rapidement une réponse HTTP réussie et gardez l’interrogation disponible pour
la réconciliation en cas de retard de livraison ou d’indisponibilité de votre gestionnaire de rappels.
Lisez Callbacks pour créer un secret de callback, vérifier les signatures et gérer les nouvelles tentatives en toute sécurité.