Get project-wide server logs
Retrieves aggregated runtime logs from all servers in the project. Each log entry includes the server name, making it easy to filter and search across your entire fleet.
Use start_time and optionally end_time to define the time range. Returns the most recent entries within that window (up to limit), ordered oldest-to-newest.
Narrow results server-side with search (case-insensitive substring) and/or level (error/warn/info) — both apply across the ENTIRE window, not just the returned page, so you can find a specific error or session ID anywhere in the range. Set include_counts=true to also get per-level totals for the window.
Paging back: if the window holds more than limit entries, pass the response’s older_token as end_time (keeping the same start_time) to fetch the next older page. Live tail: poll with next_token as the next start_time; it points just after the newest entry returned, so each poll fetches only newer logs.
Authorizations
Query Parameters
Window start. Accepts ISO 8601 format (e.g., "2026-03-15T12:00:00Z") or relative time (e.g., "-1h"). Omit to use the default 1-hour window (symmetric with the per-server log query).
Window end. Same format as start_time. Defaults to current time if omitted. Pass the response's older_token here to page backward through the window.
Maximum number of log entries to return (1–1000). Defaults to 1000.
1 <= x <= 1000Case-insensitive substring to match within log messages. Applied server-side across the ENTIRE window, not just the returned page.
256Restrict to a single inferred severity. Levels are inferred from message content (Fly forwards raw stdout without parsed levels).
error, warn, info When true, also return per-level totals for the window (an extra aggregation query). Counts respect search but ignore the level filter.
Response
Aggregated logs from all servers in the project with pagination cursor.
Aggregated runtime logs from all servers in the project.
The most recent log entries from all servers in the project within the requested window (after any search/level filter), ordered oldest-to-newest.
Live-tail cursor pointing just after the newest entry returned. Pass as start_time in the next request to fetch only newer logs. Null if no logs were returned.
Backward cursor equal to the oldest entry returned. Pass as end_time (keeping the same start_time) to page further back through the window. Null if no logs were returned.
Per-level totals for the window when include_counts was set; otherwise null.