> ## 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 detalle de llamada upstream

> Lee la carga útil completa de solicitud y respuesta de una llamada upstream.

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

Autenticación: se requiere API key, y solo el autor de la app (publicador) puede llamarlo. Cualquier otro recibe `404`.

Captura completa de una entrada del trail: solicitud (query / body) y cuerpo de respuesta. Los cuerpos de respuesta demasiado grandes se truncan al escribir; véase `response_truncated`. Las reglas de autenticación coinciden con el endpoint de listado.

## Solicitud

### Parámetros de ruta

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

<ParamField path="call_id" type="integer" required>
  Id de la entrada del trail desde `items[].call_id` en el endpoint de listado.
</ParamField>

### Ejemplo de solicitud

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

## Respuesta

### 200 correcto

```json theme={null}
{
  "data": {
    "call_id": 0,
    "attempt": 0,
    "seq": 0,
    "stage": "string",
    "method": "string",
    "url": "string",
    "status_code": 0,
    "error": "string",
    "duration_ms": 0,
    "response_truncated": false,
    "created_at": "string",
    "request": {},
    "response_body": "string"
  }
}
```

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

<ResponseField name="call_id" type="integer" required>
  —
</ResponseField>

<ResponseField name="attempt" type="integer" required>
  —
</ResponseField>

<ResponseField name="seq" type="integer" required>
  —
</ResponseField>

<ResponseField name="stage" type="string" required>
  —
</ResponseField>

<ResponseField name="method" type="string" required>
  —
</ResponseField>

<ResponseField name="url" type="string" required>
  —
</ResponseField>

<ResponseField name="status_code" type="integer">
  —
</ResponseField>

<ResponseField name="error" type="string">
  —
</ResponseField>

<ResponseField name="duration_ms" type="integer">
  —
</ResponseField>

<ResponseField name="response_truncated" type="boolean">
  Si el cuerpo de la respuesta se truncó al escribir.
</ResponseField>

<ResponseField name="created_at" type="string" required>
  —
</ResponseField>

<ResponseField name="request" type="object">
  Contenido de la solicitud (query / headers / body; valores sensibles redactados).
</ResponseField>

<ResponseField name="response_body" type="string">
  Cuerpo de la respuesta upstream.
</ResponseField>

### Errores

| HTTP | `code`                     | `category`  | Descripción                                                                                                                                                                            |
| ---- | -------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 401  | `unauthorized`             | `forbidden` | API key ausente o no válida.                                                                                                                                                           |
| 404  | `upstream-calls-not-found` | `not_found` | Solo las ejecuciones de debug (`run_kind=test`) conservan un trail de llamadas upstream. Las ejecuciones de producción, las de otras personas y las inexistentes devuelven este error. |

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. Llama a REST directamente.
