---
title: "Get deployment logs by channel (API-owned, sanitized)"
method: GET
path: "/deployments/{id}/logs"
---

# Get deployment logs by channel (API-owned, sanitized)

`GET /deployments/{id}/logs`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/deployments/{id}/logs`
- Auth: none declared

## Query parameters

- `logKind` 'build' | 'deploy' | 'runtime' | 'event'
- `limit` integer

## Response `200`

Deployment log stream

- DeploymentLogsResponse
  - `retention` DeploymentLogRetention, required
    - `expiredLogKinds` string[], required
    - `expiredErrorLogKinds` string[], required
  - `truncatedLogKinds` string[], required: Replayed kinds whose newest window this read cut while older retained rows of that kind may exist (not removed by retention). Covers only the kinds this read replays: the requested logKind, or all four.
  - `deploymentId` string, required
  - `logKind` 'build' | 'deploy' | 'runtime' | 'event' | 'null', nullable
  - `source` 'project_logs', required
  - `cursor` string, nullable
  - `retentionPolicy` object, required
    - `maxEntriesPerCategory` integer, required
    - `maxAgeDays` integer, required
  - `streamState` 'live' | 'reconnecting' | 'catching_up' | 'delayed' | 'completed' | 'blocked', required
  - `streamStates` DeploymentLogStreamStateByKind, required
    - `event` 'live' | 'reconnecting' | 'catching_up' | 'delayed' | 'completed' | 'blocked', required
    - `build` 'live' | 'reconnecting' | 'catching_up' | 'delayed' | 'completed' | 'blocked', required
    - `deploy` 'live' | 'reconnecting' | 'catching_up' | 'delayed' | 'completed' | 'blocked', required
    - `runtime` 'live' | 'reconnecting' | 'catching_up' | 'delayed' | 'completed' | 'blocked', required
  - `runtimeLogState` RuntimeLogState, required
    - `status` 'ready' | 'empty' | 'blocked' | 'delayed' | 'failed' | 'unavailable', required
    - `reason` 'runtime-log-access-blocked' | 'runtime-log-collection-delayed' | 'runtime-log-collection-failed' | 'runtime-log-source-unavailable' | 'null', nullable, required
    - `checkedAt` string, date-time, nullable, required
    - `lastSuccessAt` string, date-time, nullable, required
  - `entries` DeploymentLogEntry[], required
    - `id` string, required
    - `phase` 'queue' | 'build' | 'deploy' | 'healthcheck' | 'system', required
    - `category` 'clone_failed' | 'build_failed' | 'image_push_failed' | 'deploy_failed' | 'healthcheck_failed' | 'runtime_startup_failed' | 'runtime_startup_timeout' | 'app_health_failed' | 'route_activation_failed' | 'platform_capacity_failed' | 'invalid_runtime_config' | 'internal_platform_error' | 'null', nullable
    - `severity` 'info' | 'warning' | 'error', required
    - `logKind` 'build' | 'deploy' | 'runtime' | 'event' | 'null', nullable
    - `stream` 'stdout' | 'stderr' | 'system' | 'null', nullable
    - `redacted` boolean, required
    - `truncated` boolean, required
    - `truncationReason` string, nullable
    - `observedAt` string, date-time, required
    - `message` string, nullable
    - `providerReady` boolean, nullable
    - `gatewayStatusCode` integer, nullable
    - `gatewayRouteMatched` boolean, nullable
    - `gatewayAppRespondedOk` boolean, nullable
    - `gatewayTlsOk` boolean, nullable
    - `probeAttempts` integer, nullable
    - `createdAt` string, date-time, required

## Other responses

- `400`: Invalid logKind filter or limit

---

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