---
title: "Automatisation et sortie du CLI"
description: "Exécutez le CLI AI Glot en toute sécurité dans vos scripts et vos pipelines CI via JSON ou NDJSON, des identifiants d'environnement, des profils."
canonical: "https://ai-glot.com/docs/fr/cli/automation"
updated: "2026-08-12"
---

# Automatisation et sortie du CLI

Le CLI affiche des tableaux lisibles dans un terminal, mais utilise le format JSON lorsque la sortie est redirigée (piped). Ainsi, une même commande fonctionne aussi bien de manière interactive qu'automatisée.

```bash
aiglot batches list                    # tableau dans le terminal
aiglot batches list | jq '.data[0].id' # JSON lors d'une redirection
aiglot batches list --output ndjson    # un objet par ligne
aiglot account --json                  # JSON explicite
```

Les erreurs sont envoyées vers la sortie d'erreur standard (stderr), tout comme les avertissements importants, tels que la notification d'une page de résultats tronquée. La sortie standard (stdout) reste donc sûre pour être redirigée vers un autre programme.

## Pagination

Les commandes `batches list` et `glossaries list` fonctionnent avec des curseurs. Transmettez le `next_cursor` de la réponse précédente via l'option `--cursor`, ou utilisez `--all` pour automatiser le processus jusqu'à ce que `has_more` soit égal à `false` (limité à 200 pages par sécurité) :

```bash
aiglot batches list --status completed --all
aiglot glossaries list --all --output ndjson
```

Avec `--output ndjson`, l'option `--all` affiche chaque ligne de chaque page au fur et à mesure de leur réception. En mode `table` et `json`, elle affiche un résultat combiné avec `has_more: false`, `next_cursor: null` et un compte `pages_fetched` à la place de `request_id` (puisqu'une seule requête ne peut être nommée lorsque plusieurs ont été exécutées).

> **Warning: Avertissement de page tronquée sur la sortie d'erreur**
>
> Sans l'option `--all`, dès qu'une page a la valeur `has_more: true`, le CLI écrit un avertissement mentionnant le `next_cursor` dans la sortie d'erreur standard, quel que soit le mode de sortie. C'est crucial pour le format `ndjson`, dont la sortie standard ne contient que des lignes brutes : l'avertissement est le seul signal indiquant qu'une page partielle ne constitue pas la liste complète.

## Authentification CI

Créez une clé API dédiée avec des privilèges restreints et stockez-la dans le gestionnaire de secrets de votre fournisseur CI :

```bash
export AIGLOT_API_KEY="aig_live_…"
aiglot account --json
```

Le CLI vérifie les identifiants dans l'ordre suivant : `AIGLOT_API_KEY`, le trousseau (keychain) de l'OS, puis son fichier de configuration protégé.

## Codes de sortie

| Code | Signification                             |
| ---: | ----------------------------------------- |
|    0 | Succès                                    |
|    1 | Erreur API ou serveur                     |
|    2 | Commande ou arguments invalides           |
|    3 | Échec d'authentification ou de permission |
|    4 | Ressource non trouvée                     |
|    5 | Limite de débit atteinte (Rate limit)     |
|    6 | Conflit d'état de la ressource            |

Les scripts doivent se baser sur le code de sortie ou le code structuré `error.code`, et non sur le texte du message d'erreur.

## Tentatives de reconnexion (Retries)

Les tentatives sont automatiques, mais uniquement lorsqu'elles sont sûres. L'erreur `429` est systématiquement retentée pour chaque commande, en respectant le header `Retry-After` avec un délai exponentiel limité. Les erreurs `408` et `5xx` ne sont retentées que pour les requêtes idempotentes (RFC 9110 §9.2.2) — lectures, `glossaries replace`, `glossaries delete`.

Les commandes `glossaries create`, `glossaries add`, `glossaries remove`, `batches rename` et `batches archive` ne sont **pas** retentées après une erreur `5xx`, car l'écriture a pu être prise en compte et une seconde tentative pourrait l'appliquer deux fois. Ces échecs sont remontés à votre script avec le code de sortie `1` : relisez la ressource et décidez vous-même s'il faut réessayer plutôt que de relancer aveuglément.

Utilisez `--no-retry` lorsque le programme appelant gère sa propre politique de tentative, et `--timeout <secondes>` (par défaut 60) pour limiter la durée d'une seule requête. Les commandes destructives n'attendent jamais indéfiniment une réponse interactive : l'utilisation non interactive doit passer l'option `--force`.

## Profils

Utilisez des profils nommés pour séparer les identifiants de différents espaces de travail ou environnements :

```bash
aiglot --profile client-a auth login --key "$CLIENT_A_KEY"
aiglot --profile client-a account
export AIGLOT_PROFILE=client-a
```

## Variables d'environnement

| Variable             | Usage                                                                                             |
| -------------------- | ------------------------------------------------------------------------------------------------- |
| `AIGLOT_API_KEY`     | Clé API ; remplace les identifiants stockés                                                       |
| `AIGLOT_PROFILE`     | Nom du profil d'identifiants                                                                      |
| `AIGLOT_NO_TUI`      | Force une sortie lisible par machine                                                              |
| `AIGLOT_NO_KEYCHAIN` | Ignore le trousseau de l'OS                                                                       |
| `NO_COLOR`           | Standard (no-color.org). Désactive uniquement la couleur ; ne modifie **pas** le format de sortie |

> **Warning: Ne pas afficher les secrets**
>
> Évitez le traçage du shell (shell tracing) lors de l'authentification et ne faites jamais d'echo de `AIGLOT_API_KEY`. Masquez les headers d'autorisation dans les journaux CI et les artefacts d'échec.
