FlowKit

API Batch OpenAI et Anthropic dans n8n : diviser par deux le coût de vos appels IA

Publié le 5 août 2026 · 6 min de lecture

Un workflow n8n qui appelle un LLM en temps réel paie le tarif plein, ligne par ligne, seconde après seconde. C'est justifié pour un chatbot ou une alerte urgente — ça l'est beaucoup moins pour un digest d'emails envoyé une fois par jour, une ingestion documentaire nocturne ou un rapport de conformité mensuel. Pour ces traitements qui tolèrent quelques heures de délai, OpenAI et Anthropic proposent tous deux une API Batch : les mêmes modèles, à moitié prix, en échange d'un traitement asynchrone. n8n n'a pas de node dédié, mais le node HTTP Request suffit à orchestrer tout le cycle : soumission, attente, récupération des résultats.

Le principe : soumettre un lot, récupérer les résultats plus tard

Les deux fournisseurs suivent la même logique, avec des détails d'implémentation différents.

OpenAI : on téléverse un fichier .jsonl (une requête par ligne, chacune avec un custom_id, une method, une url d'endpoint et un body) via POST /v1/files avec purpose=batch, puis on crée le lot avec POST /v1/batches en pointant vers ce fichier et en choisissant l'endpoint cible (/v1/chat/completions, /v1/embeddings, /v1/responses…) et une fenêtre de traitement de 24 heures. Une fois le statut passé à completed, un output_file_id est disponible et se récupère via GET /v1/files/{id}/content.

Anthropic : plus direct, sans étape de fichier séparée. POST /v1/messages/batches accepte directement un tableau requests, chaque entrée portant un custom_id et des params identiques à ceux d'un appel classique à /v1/messages (tool use compris) — jusqu'à 100 000 requêtes par lot. Le statut se vérifie par GET /v1/messages/batches/{id} ; une fois passé à ended, le champ results_url pointe vers un fichier .jsonl des résultats.

Dans les deux cas, la remise est de 50 % sur les tokens d'entrée et de sortie, et le SLA affiché est de 24 heures — en pratique, la plupart des petits lots reviennent en une à quatre heures.

Pourquoi c'est moins cher : ce n'est pas une remise arbitraire

Ce rabais reflète un vrai gain d'efficacité côté serveur, pas un geste commercial. Servir des requêtes une par une sous-utilise le GPU ; les regrouper permet de traiter beaucoup plus de tokens par cycle de calcul. C'est exactement le mécanisme documenté par Woosuk Kwon et ses coauteurs dans « Efficient Memory Management for Large Language Model Serving with PagedAttention » (SOSP 2023, le papier fondateur du moteur d'inférence vLLM) : en gérant la mémoire des requêtes en cours par pages plutôt qu'en blocs contigus, le système peut faire tourner beaucoup plus de requêtes en parallèle sur le même matériel, avec un débit multiplié par plusieurs facteurs par rapport à un service séquentiel naïf. Un fournisseur qui peut différer l'exécution de vos requêtes de quelques heures peut les regrouper avec celles d'autres clients aux moments creux — d'où la remise, économiquement fondée plutôt qu'arbitraire.

Quels workflows n8n s'y prêtent (et lesquels non)

Le critère est simple : le traitement peut-il attendre sans que personne ne s'en aperçoive ?

De bons candidats :

  • Le digest quotidien du Pack Inbox IA : si le tri des emails de la nuit ne part en Slack qu'à 8 h, classer 200 emails à 2 h du matin via un batch au lieu d'un appel synchrone par email ne change rien pour l'utilisateur — et coupe la facture de classification en deux.
  • L'ingestion documentaire du Pack Assistant RAG : générer les embeddings d'un lot de PDF ou d'une synchronisation Notion nocturne (voir notre guide RAG avec Supabase pgvector et notre comparatif sur le choix du modèle d'embeddings) n'a aucune contrainte de latence — l'API Batch Embeddings d'OpenAI accepte jusqu'à 50 000 entrées par lot.
  • Les rapports périodiques du Pack Conformité & Audit : synthèse hebdomadaire ou mensuelle générée par IA, où quelques heures de délai n'ont aucune conséquence.

De mauvais candidats : tout ce qui répond directement à un humain qui attend — un chatbot, un widget de chat sur site, une réponse à un message Slack ou WhatsApp entrant. Pour ces cas, restez sur l'appel synchrone classique et travaillez plutôt le cadencement décrit dans notre article sur les rate limits et le Loop Over Items, ou la répartition de charge du mode queue avec Redis.

Implémentation dans n8n : deux workflows séparés

Le plus simple est de découper l'orchestration en deux workflows n8n indépendants plutôt que de faire attendre une seule exécution pendant des heures.

1. Soumission du batch

Un Schedule Trigger (par exemple 2 h du matin) déclenche la collecte des items à traiter — les emails du jour dans une table Supabase, les documents ajoutés depuis la dernière synchronisation. Un node Code construit ensuite le tableau de requêtes, en attribuant à chaque item un custom_id qui permettra de le retrouver au retour (l'ID de l'email ou du document en base, par exemple). Pour Anthropic, ce tableau part directement dans le corps de la requête POST /v1/messages/batches via un node HTTP Request ; pour OpenAI, il faut d'abord l'écrire en .jsonl et le téléverser via POST /v1/files (purpose=batch), avant de créer le lot avec POST /v1/batches. Dans les deux cas, le node HTTP Request propose une authentification « Predefined Credential Type » qui reconnaît directement les credentials OpenAI ou Anthropic déjà configurés pour vos nodes Chat Model — pas besoin d'en recréer. Le batch_id (ou id côté OpenAI) renvoyé par l'appel est enregistré dans une table Supabase avec un statut en_cours.

2. Vérification et récupération

Un second Schedule Trigger, cadencé par exemple toutes les 30 minutes, interroge GET /v1/messages/batches/{id} (Anthropic) ou GET /v1/batches/{id} (OpenAI) pour chaque lot enregistré comme en_cours. Un node IF teste le statut : ended côté Anthropic, completed côté OpenAI. Tant que ce n'est pas le cas, le workflow s'arrête simplement — il repartira au prochain déclenchement, sans qu'aucune exécution ne reste bloquée en attente pendant des heures (le même réflexe que pour l'idempotence des webhooks : chaque passage est indépendant et rejouable). Une fois le statut favorable, un node HTTP Request récupère les résultats — via results_url (Anthropic) ou GET /v1/files/{output_file_id}/content (OpenAI) — puis un node Code (éventuellement précédé d'un Split Out) parcourt le .jsonl, fait correspondre chaque résultat à son custom_id d'origine et réinjecte la réponse du modèle dans la table Supabase correspondante, exactement comme le ferait l'appel synchrone habituel.

Pièges et limites

  • Pas de function calling multi-tours : un batch traite chaque requête indépendamment, sans les allers-retours d'outils propres au node AI Agent. Pour les workflows qui en dépendent (voir notre article sur les outils personnalisés de l'AI Agent), l'appel synchrone reste nécessaire.
  • Un batch en échec partiel reste exploitable : chaque ligne de résultat porte son propre statut, rattaché à son custom_id. Une requête qui échoue (contenu trop long, erreur de format) n'empêche pas de traiter les autres résultats du même lot — prévoyez simplement une branche pour retraiter ou journaliser les erreurs individuelles.
  • Combinez avec un fallback si le délai n'est pas garanti : pour un traitement sensible au calendrier (un rapport dû avant une échéance légale), gardez un mécanisme de repli vers l'appel synchrone si le lot n'est pas revenu dans la fenêtre prévue — le principe rejoint notre article sur le fallback multi-fournisseurs IA.

En résumé

Les API Batch d'OpenAI et d'Anthropic ne demandent aucun node spécifique dans n8n : un HTTP Request pour soumettre, un Schedule Trigger pour vérifier périodiquement, un autre HTTP Request pour récupérer les résultats via leur custom_id. En échange d'un délai de quelques heures au lieu d'une réponse instantanée, la facture des tokens d'entrée et de sortie est divisée par deux — un gain direct sur tout traitement qui n'a jamais eu besoin d'être temps réel : digest quotidien, ingestion documentaire nocturne, rapport périodique. Les workflows des Pack Inbox IA (79 €), Pack Assistant RAG (119 €) et Pack Conformité & Audit (149 €) — réunis dans le Bundle FlowKit Complet (269 € au lieu de 347 €) — sont conçus pour tourner en appel synchrone dès l'import ; brancher un lot Batch en amont des étapes non urgentes est une optimisation à ajouter une fois le volume réel constaté, pas un prérequis.

FAQ

Questions fréquentes

Les API Batch fonctionnent-elles avec le node AI Agent de n8n ?

Non directement : le node AI Agent (comme les nodes OpenAI et Anthropic natifs) appelle toujours l'API synchrone. Les API Batch se pilotent via un node HTTP Request classique, en appelant directement les endpoints /v1/batches (OpenAI) ou /v1/messages/batches (Anthropic). C'est un mécanisme séparé, pas une option des nodes existants.

Combien de temps faut-il attendre les résultats d'un batch ?

Les deux fournisseurs annoncent une fenêtre de 24 heures maximum, mais les petits batches (quelques centaines à quelques milliers de requêtes) reviennent en général en une à quatre heures. C'est adapté à un digest quotidien ou une ingestion nocturne, pas à un chatbot ou une réponse attendue en quelques secondes.

Peut-on utiliser les credentials OpenAI ou Anthropic déjà configurés dans n8n ?

Oui. Le node HTTP Request propose une authentification par « Predefined Credential Type » qui inclut OpenAI et Anthropic : sélectionnez le credential déjà utilisé par vos nodes AI Agent ou Chat Model habituels, sans recréer de clé API dédiée.

Que se passe-t-il si une requête individuelle échoue dans le batch ?

Le batch entier continue de s'exécuter : chaque ligne du fichier de résultats porte son propre statut (succeeded/errored côté Anthropic, un champ error côté OpenAI) rattaché au custom_id de la requête d'origine. Un item en erreur n'affecte pas les autres ; à vous de le retraiter individuellement ou de le renvoyer au batch suivant.

Bundle FlowKit Complet

269 €