> ## 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.

# Obtenir les enregistrements d’exécution

> Parcourt page par page les enregistrements produits par une exécution. Prend en charge JSON, JSONL, CSV et la projection de colonnes.

**`GET`** `https://api-datahub.octoparse.com/v1/runs/{run_id}/records`

Authentification : clé API requise (`Authorization: Bearer <API Key>`).

Parcourt page par page les enregistrements produits par une exécution. `format` prend en charge `json` (défaut, avec enveloppe et pagination), `jsonl` et `csv`. `fields` est une projection de colonnes séparées par des virgules.

Vous pouvez lire pendant que l’exécution est encore en cours ; vous obtenez ce qui a déjà été produit, et `pagination.total` continue de croître. Attendez un état terminal pour le résultat complet. `partial` vaut `true` quand l’exécution a partiellement réussi ou a été annulée ; ces enregistrements sont valides et déjà facturés.

Vous ne pouvez lire que les exécutions que vous avez démarrées. Le `run_id` d’un autre compte et un `run_id` manquant renvoient tous deux `404`.

## Requête

### Paramètres de chemin

<ParamField path="run_id" type="string" required>
  Id de l’exécution.
</ParamField>

### Paramètres de requête

<ParamField query="offset" type="integer" default="0">
  Offset de pagination.

  Plage ≥ 0.
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Taille de page, max 10000.

  Plage 1 à 10000.
</ParamField>

<ParamField query="format" type="string" default="json">
  Format de sortie. `json` est enveloppé avec pagination ; `jsonl` est un enregistrement par ligne ; `csv` est tabulaire.

  Valeurs : `json` / `jsonl` / `csv`.
</ParamField>

<ParamField query="fields" type="string">
  Noms de champs séparés par des virgules. Seules ces colonnes sont renvoyées, par exemple `title,price,url`.
</ParamField>

### Exemple de requête

```bash theme={null}
curl \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  "https://api-datahub.octoparse.com/v1/runs/run_c62bc0fb8df2/records?offset=0&limit=100"
```

## Réponse

### 200 succès

```json theme={null}
{
  "data": {
    "run_id": "run_c62bc0fb8df2",
    "dataset_id": "ds_0bd5345d13d0",
    "records": [
      {
        "review_id": "103c9e-0000"
      },
      {
        "review_id": "103c9e-0001"
      }
    ],
    "partial": false,
    "pagination": {
      "offset": 0,
      "limit": 2,
      "count": 2,
      "total": 20,
      "has_more": true
    }
  }
}
```

Avec `format=jsonl` ou `format=csv`, le corps de la réponse est du texte brut sans enveloppe. Les paramètres de pagination s’appliquent toujours.

La charge utile est encapsulée dans `data`. Champs :

<ResponseField name="run_id" type="string">
  Id de l’exécution.
</ResponseField>

<ResponseField name="dataset_id" type="string" required>
  Dataset qui contient le résultat.
</ResponseField>

<ResponseField name="records" type="object[]" required>
  Tableau d’enregistrements. Chaque item suit la forme de `output_schema.record` de l’app.
</ResponseField>

<ResponseField name="partial" type="boolean">
  Si l’exécution a partiellement réussi ou a été annulée.
</ResponseField>

<ResponseField name="pagination" type="object" required>
  Objet de pagination.

  <Expandable title="fields">
    <ResponseField name="offset" type="integer">
      —
    </ResponseField>

    <ResponseField name="limit" type="integer">
      —
    </ResponseField>

    <ResponseField name="count" type="integer">
      —
    </ResponseField>

    <ResponseField name="total" type="integer">
      —
    </ResponseField>

    <ResponseField name="has_more" type="boolean">
      —
    </ResponseField>
  </Expandable>
</ResponseField>

### Erreurs

| HTTP | `code`          | `category`  | Description                                                             |
| ---- | --------------- | ----------- | ----------------------------------------------------------------------- |
| 401  | `unauthorized`  | `forbidden` | Clé API manquante ou invalide.                                          |
| 404  | `run-not-found` | `not_found` | L’exécution n’existe pas, ou n’a pas été démarrée par le compte actuel. |

Les réponses d’erreur utilisent `{"error": {code, category, message, retryable}}`. Voir <a href="/docs/fr/datahub/api/reference/introduction#errors">Erreurs</a>.

## Bibliothèques clientes

<CodeGroup>
  ```python Python theme={null}
  # Auto-paginer tous les enregistrements
  for record in client.iterate_records("run_c62bc0fb8df2", batch=500):
      print(record)

  # Une page
  page = client.get_records("run_c62bc0fb8df2", offset=0, limit=100, fields="title,price")

  # Exporter le résultat complet en texte (jsonl / csv)
  text = client.export_records("run_c62bc0fb8df2", format="csv")
  ```

  ```js JavaScript theme={null}
  // Auto-paginer tous les enregistrements
  for await (const record of client.iterateRecords("run_c62bc0fb8df2", { batch: 500 })) {
    console.log(record);
  }

  // Une page
  const page = await client.getRecords("run_c62bc0fb8df2", { offset: 0, limit: 100, fields: "title,price" });

  // Exporter le résultat complet en texte (jsonl / csv)
  const text = await client.exportRecords("run_c62bc0fb8df2", "csv");
  ```
</CodeGroup>
