# Split in batches

Découpe une liste en lots plus petits pour traiter en boucle de manière contrôlée.

## Configuration

| Champ | Rôle |
| --- | --- |
| **Input ctx key** | Chemin vers la liste : `last_output`, `input.items`, `event.body.items`, etc. La valeur résolue doit être un tableau. |
| **Batch size** | Nombre d'éléments par lot, de 1 à 1 000 (défaut 10). |

Utilisez la branche **Batch** pour le traitement et **Done** pour la fin. Les lots sont exécutés séquentiellement, pas en parallèle. La branche Batch s'exécute une fois par lot ; la branche Done s'exécute une seule fois après le traitement de tous les lots. Si la liste est vide, Batch est ignorée et le workflow passe directement à Done.

## Exemple

Pour 250 clients et une taille de lot de 100 :

```
250 clients
├── Batch 1 : 100 clients
├── Batch 2 : 100 clients
├── Batch 3 :  50 clients
└── Done
```

Workflow typique :

```
HTTP Request → Split In Batches
                  ├── Batch → Traiter / envoyer les éléments du lot
                  └── Done  → Envoyer le rapport final
```

## Payload de chaque lot

À chaque itération, les nœuds de la branche Batch reçoivent cette valeur structurée dans `last_output_parsed` :

```json
{
  "items": [/* éléments du lot courant */],
  "index": 0,
  "number": 1,
  "size": 100,
  "total": 250,
  "batch_count": 3,
  "is_first": true,
  "is_last": false
}
```

Utilisez par exemple `{last_output.items}`, `{last_output.number}` ou `{last_output.is_last}` dans la branche Batch.

## Sortie runtime

Après tous les lots, la branche Done reçoit un résumé contenant `total`, `batch_size`, `batch_count`, `processed_batches` et les `results` collectés à chaque itération. Ce résumé est écrit dans `last_output_parsed` et reste accessible via `{outputs.<node_id>.parsed}`.

## Quand l'utiliser

- Respecter la taille maximale acceptée par une API externe.
- Éviter d'envoyer des milliers d'enregistrements dans une seule requête.
- Garder les prompts d'un agent sous les limites de contexte et de tokens.
- Traiter progressivement les lignes d'un fichier ou les résultats d'une base de données.
- Permettre l'annulation d'une exécution longue entre deux lots.

## Limites et dépannage

- L'entrée doit être un tableau ; sinon le nœud échoue avec `Split In Batches input must be a list`.
- La taille d'un lot est limitée entre 1 et 1 000.
- Le traitement est séquentiel : de petits lots donnent plus de contrôle, mais augmentent la durée totale.
- Ne reconnectez pas la branche Batch au nœud Split In Batches : l'exécuteur réalise déjà la boucle.
- Si un nœud de la branche Batch échoue, le traitement des lots s'arrête et la politique d'erreur de Split In Batches est appliquée.

## Exemple workflow

Utilisez la carte workflow ci-dessous pour créer un exemple fonctionnel dans l’éditeur. Elle utilise des données de test sûres et évite les effets externes sauf si le nœud est lui-même une intégration sortante.

---

*Source: https://agentbuilder.systalink.sn/docs/node-split-in-batches — human documentation.*
*Other language: [/docs-md/en/node-split-in-batches.md](/docs-md/en/node-split-in-batches.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
