POST /v1/batches
API batch : des traitements par lots asynchrones, traités dans l'UE
Le point de terminaison batch exécute de nombreuses requêtes en un seul traitement d'arrière-plan. Vous envoyez un fichier JSONL de requêtes chat completions ou embeddings, créez un lot et récupérez un fichier de résultats à la fin. C'est l'outil adapté aux travaux que personne n'attend : classer un stock de tickets, vectoriser une archive documentaire ou lancer une évaluation pendant la nuit.
- 01Format d'API: OpenAI
- 02Centres de données dans l'UE
- 03Couvert par un seul DPA
# ticket-classification.jsonl, one request per line:
# {"custom_id": "ticket-1042", "method": "POST", "url": "/v1/chat/completions",
# "body": {"model": "gpt-oss-120b", "messages": [{"role": "user", "content": "Classify: ..."}]}}
curl https://api.inference.eu/v1/batches \
-H "Authorization: Bearer $INFERENCE_EU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-7f3c2a",
"endpoint": "/v1/chat/completions",
"completion_window": "24h",
"metadata": {"job": "ticket-backlog-2026-11"}
}'
# Check progress
curl https://api.inference.eu/v1/batches/batch_91d0e4 \
-H "Authorization: Bearer $INFERENCE_EU_API_KEY"Ce que fait le point de terminaison
POST /v1/batches crée un traitement à partir d'un fichier déjà envoyé avec purpose batch. Indiquez son input_file_id, l'endpoint visé par chaque ligne, comme /v1/chat/completions, /v1/responses ou /v1/embeddings, et completion_window, qui vaut 24h. Le champ facultatif metadata permet d'étiqueter le traitement à votre façon.
La réponse est un objet batch avec un id et un status. Le traitement s'exécute en arrière-plan, à l'écart de votre trafic interactif : un gros stock ne concurrence pas les requêtes qu'attendent vos utilisateurs. Requêtes et résultats ne quittent jamais les centres de données européens.
Statut et résultats
Interrogez GET /v1/batches/{batch_id} pour suivre l'avancement. status passe de validating à in_progress puis finalizing, et se termine par completed, failed, expired ou cancelled. request_counts indique total, completed et failed pour afficher la progression.
Une fois le lot completed, output_file_id désigne un fichier JSONL. Chaque ligne contient le custom_id de votre entrée et une response avec le status_code et le body de réponse habituel. Les lignes ne suivent pas l'ordre d'entrée : rapprochez-les par custom_id. Les requêtes en échec vont dans le fichier error_file_id. POST /v1/batches/{batch_id}/cancel arrête un lot et GET /v1/batches liste vos traitements.
Un flux batch solide en production
Générez le fichier d'entrée depuis votre base de données, avec la clé primaire de l'enregistrement comme custom_id. Validez chaque ligne localement, envoyez le fichier, créez le lot et enregistrez son id dans votre propre système. Une tâche planifiée vérifie le statut toutes les quelques minutes au lieu de garder une connexion ouverte.
À la fin, téléchargez la sortie, réécrivez les résultats par custom_id et rassemblez les erreurs dans un nouveau fichier, plus petit, à relancer. Supprimez ensuite les fichiers d'entrée et de sortie. Un lot d'essai de cinquante lignes détecte les problèmes de prompt ou de schéma avant d'y consacrer un gros traitement.
Erreurs et cas particuliers
Un lot qui échoue à la validation, à cause d'un JSON mal formé, d'un custom_id manquant, d'identifiants en double ou de lignes visant un autre point de terminaison, se termine en status failed avec une liste errors qui précise le problème et la ligne. Corrigez le fichier et soumettez un nouveau lot.
Certaines requêtes peuvent échouer au sein d'un lot par ailleurs réussi, par exemple si un prompt dépasse la fenêtre de contexte : elles figurent dans le fichier d'erreurs sans bloquer le reste. Un lot non terminé dans la fenêtre passe en expired, et les résultats des requêtes achevées restent disponibles. Taille des lots et débit dépendent de votre offre ; nous vous les confirmons.
Batches : questions fréquentes
Les questions que nous posent le plus les achats, les développeurs et les juristes. Il en manque une ? Posez-la-nous directement.
Pages liées
- FilesEnvoyez, listez, téléchargez et supprimez des fichiers avec une API Files compatible OpenAI, pour vos lots et vos outils. Stockage dans l'UE.Endpoints
- EmbeddingsTransformez du texte en vecteurs pour la recherche, le RAG et le clustering avec une API d'embeddings compatible OpenAI, traitée dans des centres de l'UE.Endpoints
- Chat completionsEnvoyez vos messages à des modèles open-weight au format chat completions d'OpenAI. Traitement dans des centres de données de l'UE, sans entraînement.Endpoints
- Rate limits and errorsFonctionnement des limites de débit et des erreurs de l'API inference.eu : codes HTTP, objet d'erreur, en-têtes de limite et schéma de reprise fiable.Guides
Faites passer vos charges IA sur une infrastructure européenne
Dites-nous quels modèles vous utilisez et votre volume approximatif. Nous répondons sous un jour ouvré avec un tarif et la suite.
- Réponse sous un jour ouvré
- Tarif adapté à votre volume
- DPA prêt à signer