> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sortie et codes de sortie

> Comprenez la sortie JSON, les flux d’événements JSONL, stdout, stderr, les codes de sortie et les types d’événements d’Octoparse CLI.

Octoparse CLI propose une sortie lisible par l’utilisateur dans le terminal et une sortie lisible par machine pour l’automatisation.

Consultez cette page lorsque vous appelez Octoparse CLI depuis des scripts, agents, tâches CI ou autres environnements automatisés.

## Sortie JSON

Utilisez `--json` pour obtenir une réponse JSON unique et stable.

```bash theme={null}
octoparse task list --json
octoparse auth status --json
octoparse local status <taskId> --json
```

Les commandes réussies renvoient une enveloppe JSON contenant `ok: true` et un champ `data` :

```json theme={null}
{
  "ok": true,
  "data": {
    "items": [
      { "taskId": "abc123", "taskName": "Example task", "status": "Idle" }
    ],
    "page": 1,
    "pageSize": 20,
    "total": 1
  }
}
```

Les commandes en échec renvoient `ok: false` avec un champ `error` contenant un code et un message :

```json theme={null}
{
  "ok": false,
  "error": {
    "code": "AUTH_REQUIRED",
    "message": "API key is required for this command."
  }
}
```

La structure exacte de `data` dépend de la commande. Les codes d’erreur courants comprennent `AUTH_REQUIRED`, `AUTH_INVALID`, `TASK_INVALID`, `LINUX_ARM64_UNSUPPORTED`, `ENGINE_RUN_FAILED` et `UNSUPPORTED_EXPORT_FORMAT`. Exécutez `octoparse capabilities --json` pour obtenir la liste complète.

## Flux d’événements JSONL

Utilisez `--jsonl` pour les longues extractions locales. La sortie diffuse un objet JSON par ligne :

```bash theme={null}
octoparse run <taskId> --jsonl
```

Exemple de flux :

```jsonl theme={null}
{"event":"run.started","taskId":"abc123","timestamp":"2026-01-01T10:00:00.000Z"}
{"event":"row","taskId":"abc123","count":1}
{"event":"captcha","taskId":"abc123","service":"..."}
{"event":"proxy","taskId":"abc123","status":"..."}
{"event":"run.completed","taskId":"abc123","savedRows":42}
```

Types d’événements stables :

| Événement            | Déclenchement                                      |
| -------------------- | -------------------------------------------------- |
| `warning`            | Avertissement d’exécution non fatal                |
| `billing.warning`    | Avertissement de solde faible                      |
| `billing.error`      | Solde épuisé                                       |
| `run.started`        | Démarrage d’une exécution locale                   |
| `row`                | Enregistrement d’une ligne                         |
| `log`                | Ligne de journal du moteur                         |
| `captcha`            | Demande de CAPTCHA par l’environnement d’exécution |
| `proxy`              | Demande ou état du Proxy                           |
| `download.started`   | Début du téléchargement d’un fichier               |
| `download.succeeded` | Téléchargement terminé                             |
| `download.failed`    | Échec du téléchargement                            |
| `run.paused`         | Exécution suspendue                                |
| `run.resumed`        | Reprise de l’exécution                             |
| `run.stopping`       | Arrêt demandé et exécution en cours de fermeture   |
| `run.stopped`        | Exécution arrêtée par l’utilisateur                |
| `run.failed`         | Échec de l’exécution avec une erreur               |

<Note>
  Les noms et champs des événements peuvent évoluer entre les versions. Traitez chaque ligne comme un objet JSON autonome et gérez sans risque les champs inconnus.
</Note>

## Artefacts des exécutions détachées

Avec `--detach`, la CLI écrit des fichiers d’amorçage dans le répertoire de sortie :

| Fichier          | Contenu                                    |
| ---------------- | ------------------------------------------ |
| `bootstrap.json` | Métadonnées et état initial de l’exécution |
| `stdout.log`     | Sortie standard de l’exécution             |
| `stderr.log`     | Erreur standard de l’exécution             |

Fichiers d’artefacts locaux, dans le répertoire d’exécution :

| Fichier           | Contenu                         |
| ----------------- | ------------------------------- |
| `meta.json`       | Métadonnées de l’exécution      |
| `control.json`    | État de contrôle de l’exécution |
| `events.jsonl`    | Tous les événements JSONL       |
| `logs.jsonl`      | Lignes de journal du moteur     |
| `rows.jsonl`      | Lignes enregistrées             |
| `downloads.jsonl` | Événements de téléchargement    |

## stdout et stderr

| Flux   | Mode utilisateur                      | Mode `--json` / `--jsonl`             |
| ------ | ------------------------------------- | ------------------------------------- |
| stdout | Sortie de la commande                 | JSON ou JSONL structuré               |
| stderr | Diagnostics, avertissements et échecs | Texte brut ou enveloppe d’erreur JSON |

Cette séparation permet aux outils d’automatisation de rediriger la sortie demandée sans y mélanger les journaux de diagnostic.

## Codes de sortie

| Code | Signification                           | Causes courantes                                                                                 |
| ---- | --------------------------------------- | ------------------------------------------------------------------------------------------------ |
| 0    | Succès                                  | Commande terminée comme demandé                                                                  |
| 1    | Échec de l’opération                    | Échec d’authentification, tâche introuvable, erreur d’export                                     |
| 2    | Échec d’exécution ou d’environnement    | Version Node.js incompatible, Chrome indisponible, échec d’initialisation du moteur, Linux arm64 |
| 3    | Définition de tâche non prise en charge | La tâche utilise le navigateur du noyau ou un ancien flux non pris en charge par CLI v1          |

Un code différent de zéro signifie que la commande ne s’est pas terminée comme prévu.

## Recommandations pour l’automatisation

* Utilisez `--json` lorsqu’un script attend une seule réponse structurée.
* Utilisez `--jsonl` pour les longues exécutions de tâches.
* Considérez tout code différent de zéro comme l’échec d’une étape automatisée.
* Lors du dépannage, capturez stderr séparément.
* N’exposez jamais de clés API ni de jetons dans les journaux ou les sorties CI.
* Au début du flux d’un agent, exécutez `octoparse capabilities --json` pour découvrir les commandes disponibles et le contrat machine actuel.

<Note>
  Pour les agents d’IA et environnements automatisés, préférez `--json` ou `--jsonl` à la sortie destinée aux utilisateurs. Commencez par `octoparse capabilities --json` pour obtenir l’intégralité du contrat machine.
</Note>
