Comparer les trois endpoints
Lequel utiliser
- Jusqu’à 500 tâches, et vous gérez les nouvelles tentatives :
POST /v1/async/task/batch. Vous recevez l’id de chaque tâche dans la réponse. - Plus de tâches que la concurrence de votre plan, ou un job quotidien de plusieurs milliers :
POST /v1/batches. Le serveur conserve les éléments et les injecte au rythme permis par la limite de votre plan et la file de chaque moteur : vous n’avez pas à réessayer les429ni les503vous-même. - Un même prompt posé depuis de nombreux points autour d’un lieu :
POST /v1/async/task/grid.
POST /v1/async/task/batch
Envoyez un tableau de jusqu’à 500 requêtes de tâche (référence). Les moteurs peuvent être mélangés.
200. results[i].index correspond à la position dans votre tableau, et chaque résultat contient soit task, soit error :
Un
idempotencyKey répété renvoie la tâche existante comme un succès. Consultez Idempotence.
POST /v1/batches
Envoyez jusqu’à 10 000 éléments (référence). Chaque élément accepte les champs de tâche taskType, payload, priority et idempotencyKey, plus un customId facultatif (jusqu’à 128 caractères) renvoyé dans les résultats. Définissez webhook.url sur le lot, pas sur les éléments.
202 avec le lot. Les premiers éléments sont déjà soumis :
Règles de l’enveloppe
Validation tout ou rien
Chaque élément subit les mêmes contrôles qu’une tâche unitaire avant tout stockage : champs, moteurs autorisés de la clé, moteurs privés, endpoints dédiés, région etpayload.location. Si un élément échoue, la réponse est 400 VALIDATION_ERROR, rien n’est stocké, et details liste jusqu’à 50 éléments en échec :
Exécution des éléments
Le lot libère les éléments sous forme de tâches quand la limite de votre plan et la file du moteur ont de la place. Les comptes passent à tour de rôle : un gros lot ne bloque pas un petit lot d’un autre compte. Chaque élément libéré passe par la même admission qu’une tâche unitaire : il pose un blocage de crédits et compte dans la limite quotidienne de crédits de la clé. Quand un élément est refusé, le code détermine la suite :
Le lot passe à
COMPLETED quand aucun élément n’est en attente et que toutes les tâches sont terminées. Avec webhook.url, le serveur publie ensuite l’événement batch.completed.
Lire la progression et les résultats
GET /v1/batches/{id} renvoie le lot avec counts par statut d’élément : pending, queued, processing, completed, failed, rejected. L’interroger fait aussi avancer les éléments en attente.
GET /v1/batches/{id}/items liste les éléments dans l’ordre de soumission :
REJECTED porte error: { code, message }. Les corps de résultat ne sont inclus que pendant la fenêtre de polling de 24 heures décrite dans Tâches asynchrones. Consultez aussi Obtenir un lot et Lister les éléments d’un lot.
POST /v1/async/task/grid
Posez un même prompt depuis chaque point d’une grille carrée autour d’un centre (référence). Chaque point devient une tâche avec ce point comme payload.location : le moteur doit donc accepter une localisation : CHATGPT, GEMINI, GOOGLE, AIMODE ou GOOGLE_SERP. N’envoyez pas payload.location vous-même.
La ligne 0 est le bord nord et la colonne 0 le bord ouest. La réponse renvoie
grid (avec id et spacingMeters), un summary et les points dans l’ordre des lignes, chacun avec row, col, location et soit task, soit error.
Le point central est admis en premier, seul. S’il est refusé (par exemple 422 LOCATION_UNSUPPORTED, 403 KEY_SCOPE_DENIED, 402 INSUFFICIENT_CREDITS ou un plan saturé), cette erreur devient la réponse pour toute la grille et aucune tâche n’est créée. Les points suivants refusés faute de capacité échouent sur place avec success: false.
Relisez une grille avec GET /v1/async/task/grid/{id}. Ajoutez ?include=response pour obtenir les résultats des tâches terminées. Les points jamais admis sont absents, et l’id de grille d’un autre compte renvoie 404. Renvoyer la même grille sous le même id n’admet que les points manquants ; consultez Idempotence.
Étapes suivantes
Idempotence
Comment chaque endpoint traite une clé répétée.
Crédits et limites
Concurrence du plan et cadencement.