> ## 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 une exécution éditeur

> Un appel contre une app que vous avez publiée. Champs autorisés plus avertissements structurés.

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

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

Un appel contre une app que vous avez publiée : les mêmes champs whitelist que la liste, plus avertissements structurés. Pas d’entrée, résultats ni identité appelant.

## Requête

### Paramètres de chemin

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

### Exemple de requête

```bash theme={null}
curl \
  -H "Authorization: Bearer $OCTOPARSE_API_KEY" \
  "https://api-datahub.octoparse.com/v1/publisher/runs/run_c62bc0fb8df2"
```

## Réponse

### 200 succès

```json theme={null}
{
  "data": {
    "run_id": "run_c62bc0fb8df2",
    "namespace": "carol",
    "app_name": "probe-b",
    "app_version": "0.1.0",
    "build_id": null,
    "run_kind": "production",
    "state": "SUCCEEDED",
    "partial": false,
    "triggered_by": "api",
    "created_at": "2026-09-15T07:45:40.411993+00:00",
    "started_at": "2026-09-15T07:45:40.419610+00:00",
    "finished_at": "2026-09-15T07:45:40.822250+00:00",
    "duration_ms": 402,
    "records": 20,
    "amount": 0.02,
    "error": null,
    "warnings": []
  }
}
```

Les champs correspondent aux éléments de <a href="/docs/fr/datahub/api/reference/publishing/list-publisher-runs">Lister les exécutions éditeur</a>, plus `warnings[]`.

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

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

<ResponseField name="namespace" type="string">
  Nom d’utilisateur de l’éditeur.
</ResponseField>

<ResponseField name="app_name" type="string">
  Nom de l’app.
</ResponseField>

<ResponseField name="app_version" type="string">
  Version de release épinglée.
</ResponseField>

<ResponseField name="build_id" type="string">
  Snapshot de build d’une exécution de débogage (`run_kind=test`) ; `null` en production.
</ResponseField>

<ResponseField name="run_kind" type="string">
  Type d’exécution.
</ResponseField>

<ResponseField name="state" type="enum" required>
  Valeurs : `PENDING` / `QUEUED` / `RUNNING` / `SUCCEEDED` / `PARTIALLY_SUCCEEDED` / `FAILED` / `CANCELLED` / `EXPIRED`.
</ResponseField>

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

<ResponseField name="triggered_by" type="string">
  Canal d’appel.
</ResponseField>

<ResponseField name="created_at" type="string">
  Heure de création de l’exécution.
</ResponseField>

<ResponseField name="started_at" type="string">
  Heure de début de l’exécution.
</ResponseField>

<ResponseField name="finished_at" type="string">
  Heure de fin de l’exécution.
</ResponseField>

<ResponseField name="duration_ms" type="integer">
  Durée d’exécution en millisecondes.
</ResponseField>

<ResponseField name="records" type="integer">
  Enregistrements réécrits.
</ResponseField>

<ResponseField name="amount" type="number">
  Frais de données payés par l’appelant.
</ResponseField>

<ResponseField name="error" type="object">
  Objet d’erreur en cas d’échec.

  <Expandable title="champs">
    <ResponseField name="code" type="string" required>
      Code d’erreur stable.
    </ResponseField>

    <ResponseField name="category" type="string">
      Catégorie d’erreur.
    </ResponseField>

    <ResponseField name="message" type="string">
      Message destiné au développeur.
    </ResponseField>

    <ResponseField name="retryable" type="boolean">
      Si un nouvel essai de la même requête peut réussir.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="warnings" type="object[]">
  Avertissements structurés pour cette exécution.

  <Expandable title="champs">
    <ResponseField name="code" type="string" required>
      Code d’avertissement, par ex. `billing-qty-missing`.
    </ResponseField>

    <ResponseField name="event" type="string">
      Nom d’événement lié le cas échéant.
    </ResponseField>

    <ResponseField name="detail" type="object">
      Charge utile de détail structurée.
    </ResponseField>

    <ResponseField name="count" type="integer">
      Combien de fois cet avertissement a été observé.
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Dernière mise à jour de cet avertissement.
    </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’est pas sur une app que vous possédez. |

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

Les SDK Python et JavaScript n’encapsulent pas encore cet endpoint. Appelez REST directement.
