---
title: "List normalized deployment diagnostics"
method: GET
path: "/v1/projects/{project_id}/deployments/{deployment_id}/logs"
---

# List normalized deployment diagnostics

`GET /v1/projects/{project_id}/deployments/{deployment_id}/logs`

## Request

- Base URL: `https://app.ohmyho.st`
- URL: `https://app.ohmyho.st/v1/projects/{project_id}/deployments/{deployment_id}/logs`
- Auth: HTTP bearer

## Path parameters

- `project_id` string, required
- `deployment_id` string, required

## Query parameters

- `cursor` string
- `limit` integer

## Headers

- `X-Request-Id` string

## Response `200`

Tenant-scoped normalized diagnostic page.

- DeploymentDiagnosticPage
  - `items` DeploymentDiagnostic[], required
    - `id` string, required
    - `source` 'build' | 'control' | 'runtime' | 'function', required
    - `code` string, required
    - `message` string, required
    - `exception_class` string
    - `file` string
    - `line` integer
    - `column` integer
    - `route` string
    - `request_id` string
    - `trace_id` string
    - `duration_ms` integer
    - `excerpt` string: The customer's own output with control characters removed before storage: on BUILD_FAILED the tail of the install/build output (newest lines last), on HEALTH_CHECK_FAILED the head of the body the health check was answered with (at most 4096 characters, never a header). A running application holds its environment's secrets and this answer is not scanned for them, so, like a query of the project's database, a HEALTH_CHECK_FAILED excerpt is returned only to an owner of the project; never answer a health check with a secret.
    - `excerpt_truncated` boolean: Whether output was omitted from excerpt (earlier build output, or the rest of the health answer). Present exactly when excerpt is present.
    - `status_code` integer: The HTTP status the health check was answered with; present only on HEALTH_CHECK_FAILED. The probe is a cookieless GET of route that follows no redirect, so a 3xx is unhealthy too.
    - `occurred_at` string, date-time, required
  - `next_cursor` string

## Other responses

- `400`: The request failed.
- `401`: The request failed.
- `403`: The request failed.
- `404`: The resource does not exist or is not visible to the authenticated principal.
- `429`: The request failed.
- `503`: The request failed.

---

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