---
title: "Stream pod logs"
method: GET
path: "/v2/pods/{id}/logs"
tags: ["Pods"]
---

# Stream pod logs

`GET /v2/pods/{id}/logs`

Streams pod logs as Server-Sent Events. The `source` query parameter
selects which log source to include.

The SSE `data` payload shape is:
`{ "source": "container", "line": "...", "ts": "..." }`.
Log-event `id` values are the event `ts` timestamp so
browser/EventSource reconnects can resume with `Last-Event-ID`.

## Query parameters

- `source` 'container' | 'system' — Log source to include in a log stream. - `container` — container stdout/stderr log stream - `system` — host lifecycle/userlogs stream
- `tail` integer
- `since` string, date-time

## Headers

- `Last-Event-ID` string, date-time

## Response `200`

Pod log event stream

## Other responses

- `401` — Authentication failed because the bearer token is missing, malformed, expired, or invalid.
- `403` — The bearer token is valid, but it does not grant access to the requested resource or action.
- `404` — The requested resource was not found or is not accessible to the caller.
- `429` — The caller exceeded its per-user rate limit. The response identifies the window that was exceeded and how long to wait. The `RateLimit` and `RateLimit-Policy` headers (per the IETF ratelimit-headers draft) also accompany successful responses, so clients can track quota before a 429.
- `default` — Error

---

[API](https://skmtc.dev/runpod/apis/runpod-rest-api.md) · [All operations](https://skmtc.dev/runpod/apis/runpod-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runpod/runpod-rest-api/revisions/504cd0394ed6/schema)
