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

# Obtener una ejecución del publicador

> Una llamada contra una app que publicó. Campos en lista blanca más avisos estructurados.

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

Autenticación: se requiere API key (`Authorization: Bearer <API Key>`).

Una llamada contra una app que publicó: los mismos campos de lista blanca que el listado, más avisos estructurados. Sin entrada, resultados ni identidad del llamador.

## Solicitud

### Parámetros de ruta

<ParamField path="run_id" type="string" required>
  Id de la ejecución.
</ParamField>

### Ejemplo de solicitud

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

## Respuesta

### 200 correcto

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

Los campos coinciden con los ítems de <a href="/docs/es/datahub/api/reference/publishing/list-publisher-runs">Listar ejecuciones del publicador</a>, más `warnings[]`.

La carga útil va envuelta en `data`. Campos:

<ResponseField name="run_id" type="string" required>
  Id de la ejecución.
</ResponseField>

<ResponseField name="namespace" type="string">
  Nombre de usuario del publicador.
</ResponseField>

<ResponseField name="app_name" type="string">
  Nombre de la app.
</ResponseField>

<ResponseField name="app_version" type="string">
  Versión de release fijada.
</ResponseField>

<ResponseField name="build_id" type="string">
  Snapshot de build al que se fijó una ejecución de depuración (`run_kind=test`); `null` en producción.
</ResponseField>

<ResponseField name="run_kind" type="string">
  Tipo de ejecución.
</ResponseField>

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

<ResponseField name="partial" type="boolean">
  Si la ejecución tuvo éxito parcial o se canceló con salida parcial.
</ResponseField>

<ResponseField name="triggered_by" type="string">
  Canal de llamada.
</ResponseField>

<ResponseField name="created_at" type="string">
  Hora de creación de la ejecución.
</ResponseField>

<ResponseField name="started_at" type="string">
  Hora de inicio de la ejecución.
</ResponseField>

<ResponseField name="finished_at" type="string">
  Hora de fin de la ejecución.
</ResponseField>

<ResponseField name="duration_ms" type="integer">
  Duración de la ejecución en milisegundos.
</ResponseField>

<ResponseField name="records" type="integer">
  Registros escritos de vuelta.
</ResponseField>

<ResponseField name="amount" type="number">
  Tarifa de datos pagada por el llamador.
</ResponseField>

<ResponseField name="error" type="object">
  Objeto de error en caso de fallo.

  <Expandable title="campos">
    <ResponseField name="code" type="string" required>
      Código de error estable.
    </ResponseField>

    <ResponseField name="category" type="string">
      Categoría de error.
    </ResponseField>

    <ResponseField name="message" type="string">
      Mensaje orientado al desarrollador.
    </ResponseField>

    <ResponseField name="retryable" type="boolean">
      Si un reintento de la misma solicitud puede funcionar.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="warnings" type="object[]">
  Avisos estructurados de esta ejecución.

  <Expandable title="campos">
    <ResponseField name="code" type="string" required>
      Código de aviso, por ejemplo `billing-qty-missing`.
    </ResponseField>

    <ResponseField name="event" type="string">
      Nombre del evento relacionado si aplica.
    </ResponseField>

    <ResponseField name="detail" type="object">
      Carga útil de detalle estructurado.
    </ResponseField>

    <ResponseField name="count" type="integer">
      Cuántas veces se observó este aviso.
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Última vez que se actualizó este aviso.
    </ResponseField>
  </Expandable>
</ResponseField>

### Errores

| HTTP | `code`          | `category`  | Descripción                                                   |
| ---- | --------------- | ----------- | ------------------------------------------------------------- |
| 401  | `unauthorized`  | `forbidden` | API key ausente o no válida.                                  |
| 404  | `run-not-found` | `not_found` | La ejecución no existe, o no está en una app de su propiedad. |

Las respuestas de error usan `{"error": {code, category, message, retryable}}`. Véase <a href="/docs/es/datahub/api/reference/introduction#errors">Errores</a>.

## Bibliotecas cliente

Los SDK de Python y JavaScript aún no encapsulan este endpoint. Llame a REST directamente.
