---
title: "Load one retained run with its captured log lines, error details, soft triage fields (error_triage / note / who / whe..."
method: GET
path: "/v1/runs/{run_id}"
tags: ["runs"]
---

# Load one retained run with its captured log lines, error details, soft triage fields (error_triage / note / who / whe...

`GET /v1/runs/{run_id}`

## Request

- Base URL: `https://api.kody.codes`
- URL: `https://api.kody.codes/v1/runs/{run_id}`
- Auth: HTTP bearer

Load one retained run with its captured log lines, error details, soft triage fields (error_triage / note / who / when), and (when available) a bounded metadata.result snapshot of the handler return value — useful for webhook deliveries, package exports, execute runs, and workflow runs. Works for ignored/resolved runs too. Records are retained about 30 days, capped per user, and pruned failure-last.

Org permission: `job:read`.

## Path parameters

- `run_id` string, required: Run id from runList, jobGet recent_runs, or another run reference.

## Response `200`

Success.

- object
  - `run` object, required
    - `id` string, required
    - `surface` 'execute' | 'export' | 'subscription' | 'app_fetch' | 'app_realtime' | 'job' | 'workflow' | 'retriever' | 'webhook', required
    - `status` 'running' | 'success' | 'error', required
    - `name` string, nullable, required
    - `package_id` string, nullable, required
    - `kody_id` string, nullable, required
    - `source_id` string, nullable, required
    - `published_commit` string, nullable, required
    - `storage_id` string, nullable, required
    - `job_id` string, nullable, required
    - `workflow_id` string, nullable, required
    - `invocation_id` string, nullable, required
    - `session_id` string, nullable, required
    - `idempotency_key` string, nullable, required
    - `parent_run_id` string, nullable, required
    - `started_at` string, required
    - `finished_at` string, nullable, required
    - `duration_ms` integer, nullable, required
    - `error_name` string, nullable, required
    - `error_message` string, nullable, required
    - `error_triage` 'ignored' | 'resolved', nullable, required: Soft triage for error runs: ignored, resolved, or null when open / not an error.
    - `triage_note` string, nullable, required
    - `triaged_at` string, nullable, required
    - `triaged_by` string, nullable, required
    - `metadata` object, required
    - `log_count` integer, required
  - `logs` object[], required
    - `run_id` string, required
    - `sequence` integer, required
    - `level` 'debug' | 'info' | 'log' | 'warn' | 'error', required
    - `message` string, required
    - `fields` object, nullable, required

## Other responses

- `400`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `401`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `403`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `404`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `409`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `413`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `429`: Too many requests (edge IP/token limit) or an entitlement / plan-cap limit. Wait at least `Retry-After` seconds before retrying.
- `500`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `503`: Error envelope `{ "error": { "code", "message", "details"? } }`.
- `default`: Error envelope `{ "error": { "code", "message", "details"? } }`.

---

[API](https://skmtc.dev/kody/apis/kody-api.md) · [All operations](https://skmtc.dev/kody/apis/kody-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kody/apis/kody-api/revisions/705f4f022728?raw)
