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

# 発行者実行詳細

> 公開 App への 1 呼び出し。ホワイトリスト欄＋構造化警告。

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

Authentication: API key required (`Authorization: Bearer <API Key>`).

One call against an app you published: the same whitelist fields as the list, plus structured warnings for that run (for example `billing-qty-missing`). Ownership is by **app**: runs on someone else’s app and unknown `run_id` values both return `404`. There is no `input`, no result data, and no caller identity. Unless you also started the run, this `run_id` cannot be opened in your own run list.

## Request

### Path parameters

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

### Example request

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

## Response

### 200 success

```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/jp/datahub/api/reference/publishing/list-publisher-runs">List publisher runs</a>, plus `warnings[]`.

The payload is wrapped in `data`. Fields:

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

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

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

<ResponseField name="app_version" type="string">
  Pinned release version.
</ResponseField>

<ResponseField name="build_id" type="string">
  Build snapshot a debug run (`run_kind=test`) was pinned to; `null` for production runs.
</ResponseField>

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

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

<ResponseField name="partial" type="boolean">
  Whether the run partially succeeded or was cancelled with partial output.
</ResponseField>

<ResponseField name="triggered_by" type="string">
  Call channel.
</ResponseField>

<ResponseField name="created_at" type="string">
  Time the run was created.
</ResponseField>

<ResponseField name="started_at" type="string">
  Time execution started.
</ResponseField>

<ResponseField name="finished_at" type="string">
  Time execution finished.
</ResponseField>

<ResponseField name="duration_ms" type="integer">
  Execution duration in milliseconds.
</ResponseField>

<ResponseField name="records" type="integer">
  Records written back.
</ResponseField>

<ResponseField name="amount" type="number">
  Data fee paid by the caller.
</ResponseField>

<ResponseField name="error" type="object">
  Error object on failure.

  <Expandable title="fields">
    <ResponseField name="code" type="string" required>
      Stable error code.
    </ResponseField>

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

    <ResponseField name="message" type="string">
      Developer-facing message.
    </ResponseField>

    <ResponseField name="retryable" type="boolean">
      Whether a retry of the same request can succeed.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="warnings" type="object[]">
  Structured warnings for this run.

  <Expandable title="fields">
    <ResponseField name="code" type="string" required>
      Warning code, for example `billing-qty-missing`.
    </ResponseField>

    <ResponseField name="event" type="string">
      Related event name when applicable.
    </ResponseField>

    <ResponseField name="detail" type="object">
      Structured detail payload.
    </ResponseField>

    <ResponseField name="count" type="integer">
      How many times this warning was observed.
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Last time this warning was updated.
    </ResponseField>
  </Expandable>
</ResponseField>

### Errors

| HTTP | `code`          | `category`  | Description                                         |
| ---- | --------------- | ----------- | --------------------------------------------------- |
| 401  | `unauthorized`  | `forbidden` | Missing or invalid API key.                         |
| 404  | `run-not-found` | `not_found` | Run does not exist, or it is not on an app you own. |

Error responses use `{"error": {code, category, message, retryable}}`. See <a href="/docs/jp/datahub/api/reference/introduction#errors">Errors</a>.

## Client libraries

The Python and JavaScript SDKs do not wrap this endpoint yet. Call REST directly.
