> ## 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 호출 하나. 화이트리스트 필드+구조화 경고.

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

인증: API 키 필요(`Authorization: Bearer <API Key>`).

내가 게시한 App에 대한 한 번의 호출: 목록과 같은 화이트리스트 필드에 해당 실행의 구조화된 경고(예: `billing-qty-missing`)가 더해집니다. 소유권은 **App** 기준입니다: 다른 사람의 App에서 실행된 것과 알 수 없는 `run_id` 모두 `404`를 반환합니다. `input`, 결과 데이터, 호출자 신원은 포함되지 않습니다. 직접 실행을 시작한 경우가 아니면 이 `run_id`를 내 실행 목록에서 열 수 없습니다.

## 요청

### 경로 파라미터

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

### 요청 예시

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

## 응답

### 200 성공

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

필드는 <a href="/docs/ko/datahub/api/reference/publishing/list-publisher-runs">List publisher runs</a>의 항목과 같으며, `warnings[]`가 추가됩니다.

페이로드는 `data`로 감쌉니다. 필드:

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

<ResponseField name="namespace" type="string">
  게시자 사용자 이름.
</ResponseField>

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

<ResponseField name="app_version" type="string">
  고정된 Release 버전.
</ResponseField>

<ResponseField name="build_id" type="string">
  디버그 실행(`run_kind=test`)이 고정된 Build 스냅샷. 프로덕션 실행에서는 `null`.
</ResponseField>

<ResponseField name="run_kind" type="string">
  실행 종류.
</ResponseField>

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

<ResponseField name="partial" type="boolean">
  실행이 부분적으로 성공했거나 부분 출력과 함께 취소되었는지 여부.
</ResponseField>

<ResponseField name="triggered_by" type="string">
  호출 채널.
</ResponseField>

<ResponseField name="created_at" type="string">
  실행이 생성된 시각.
</ResponseField>

<ResponseField name="started_at" type="string">
  실행이 시작된 시각.
</ResponseField>

<ResponseField name="finished_at" type="string">
  실행이 끝난 시각.
</ResponseField>

<ResponseField name="duration_ms" type="integer">
  실행 소요 시간(밀리초).
</ResponseField>

<ResponseField name="records" type="integer">
  다시 기록된 레코드 수.
</ResponseField>

<ResponseField name="amount" type="number">
  호출자가 지불한 데이터 요금.
</ResponseField>

<ResponseField name="error" type="object">
  실패 시 오류 객체.

  <Expandable title="fields">
    <ResponseField name="code" type="string" required>
      안정적인 오류 코드.
    </ResponseField>

    <ResponseField name="category" type="string">
      오류 카테고리.
    </ResponseField>

    <ResponseField name="message" type="string">
      개발자용 메시지.
    </ResponseField>

    <ResponseField name="retryable" type="boolean">
      같은 요청을 재시도하면 성공할 수 있는지 여부.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="warnings" type="object[]">
  이 실행의 구조화된 경고.

  <Expandable title="fields">
    <ResponseField name="code" type="string" required>
      경고 코드(예: `billing-qty-missing`).
    </ResponseField>

    <ResponseField name="event" type="string">
      해당하는 경우 관련 이벤트 이름.
    </ResponseField>

    <ResponseField name="detail" type="object">
      구조화된 상세 페이로드.
    </ResponseField>

    <ResponseField name="count" type="integer">
      이 경고가 관측된 횟수.
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      이 경고가 마지막으로 업데이트된 시각.
    </ResponseField>
  </Expandable>
</ResponseField>

### 오류

| HTTP | `code`          | `category`  | 설명                                  |
| ---- | --------------- | ----------- | ----------------------------------- |
| 401  | `unauthorized`  | `forbidden` | API 키 누락 또는 무효.                     |
| 404  | `run-not-found` | `not_found` | 실행이 존재하지 않거나, 내가 소유한 App의 실행이 아닙니다. |

오류 응답은 `{"error": {code, category, message, retryable}}`입니다. <a href="/docs/ko/datahub/api/reference/introduction#errors">오류</a> 참고.

## 클라이언트 라이브러리

Python / JavaScript SDK는 아직 이 엔드포인트를 감싸지 않습니다. REST를 직접 호출하세요.
