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

# Publisher-Run abrufen

> Ein Call gegen eine von Ihnen published App. Whitelist-Felder plus strukturierte Warnings.

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

Authentifizierung: API-Schlüssel erforderlich (`Authorization: Bearer <API Key>`).

Ein Call gegen eine von Ihnen veröffentlichte App: dieselben Whitelist-Felder wie die Liste, plus strukturierte Warnings für diesen Run (z. B. `billing-qty-missing`). Ownership ist nach **App**: Runs auf Apps anderer sind unsichtbar und liefern `404`. Autor-Debug-Runs sind standardmäßig ausgeschlossen.

## Anfrage

### Pfadparameter

<ParamField path="run_id" type="string" required>
  Run-ID.
</ParamField>

### Beispielanfrage

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

## Antwort

### 200 Erfolg

```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": []
  }
}
```

Fields match items from <a href="/docs/de/datahub/api/reference/publishing/list-publisher-runs">Publisher-Runs listen</a>, plus `warnings[]`.

Payload ist in `data` gewrappt. Felder:

<ResponseField name="run_id" type="string" required>
  Run-ID.
</ResponseField>

<ResponseField name="namespace" type="string">
  Publisher-Benutzername.
</ResponseField>

<ResponseField name="app_name" type="string">
  App-Name.
</ResponseField>

<ResponseField name="app_version" type="string">
  Gepinnte Release-Version.
</ResponseField>

<ResponseField name="build_id" type="string">
  Build-Snapshot, an den ein Debug-Run (`run_kind=test`) gebunden war; `null` bei Produktions-Runs.
</ResponseField>

<ResponseField name="run_kind" type="string">
  Run-Art.
</ResponseField>

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

<ResponseField name="partial" type="boolean">
  Ob der Run teilweise erfolgreich war oder mit Teilergebnissen abgebrochen wurde.
</ResponseField>

<ResponseField name="triggered_by" type="string">
  Aufrufkanal.
</ResponseField>

<ResponseField name="created_at" type="string">
  Zeitpunkt der Run-Erstellung.
</ResponseField>

<ResponseField name="started_at" type="string">
  Startzeit der Ausführung.
</ResponseField>

<ResponseField name="finished_at" type="string">
  Endzeit der Ausführung.
</ResponseField>

<ResponseField name="duration_ms" type="integer">
  Ausführungsdauer in Millisekunden.
</ResponseField>

<ResponseField name="records" type="integer">
  Zurückgeschriebene Datensätze.
</ResponseField>

<ResponseField name="amount" type="number">
  Vom Caller gezahlte Datengebühr.
</ResponseField>

<ResponseField name="error" type="object">
  Fehlerobjekt bei einem Fehlschlag.

  <Expandable title="fields">
    <ResponseField name="code" type="string" required>
      Stabiler Fehlercode.
    </ResponseField>

    <ResponseField name="category" type="string">
      Fehlerkategorie.
    </ResponseField>

    <ResponseField name="message" type="string">
      Entwicklerseitige Meldung.
    </ResponseField>

    <ResponseField name="retryable" type="boolean">
      Ob ein Retry derselben Anfrage erfolgreich sein kann.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="warnings" type="object[]">
  Strukturierte Warnungen für diesen Run.

  <Expandable title="fields">
    <ResponseField name="code" type="string" required>
      Warnungscode, zum Beispiel `billing-qty-missing`.
    </ResponseField>

    <ResponseField name="event" type="string">
      Zugehöriger Event-Name, falls zutreffend.
    </ResponseField>

    <ResponseField name="detail" type="object">
      Strukturierter Detail-Payload.
    </ResponseField>

    <ResponseField name="count" type="integer">
      Wie oft diese Warning beobachtet wurde.
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Zuletzt aktualisierte Zeit dieser Warning.
    </ResponseField>
  </Expandable>
</ResponseField>

### Fehler

| HTTP | `code`          | `category`  | Beschreibung                                               |
| ---- | --------------- | ----------- | ---------------------------------------------------------- |
| 401  | `unauthorized`  | `forbidden` | Fehlender oder ungültiger API-Schlüssel.                   |
| 404  | `run-not-found` | `not_found` | Run existiert nicht oder gehört nicht zu einer Ihrer Apps. |

Fehlerantworten nutzen `{"error": {code, category, message, retryable}}`. Siehe <a href="/docs/de/datahub/api/reference/introduction#errors">Fehler</a>.

## Client-Bibliotheken

Die Python- und JavaScript-SDKs wrappen diesen Endpoint noch nicht. REST direkt aufrufen.
