---
title: "Get Session Runs"
method: GET
path: "/sessions/{session_id}/runs"
tags: ["Sessions"]
---

# Get Session Runs

`GET /sessions/{session_id}/runs`

Retrieve all runs (executions) for a specific session with optional timestamp filtering. Runs represent individual interactions or executions within a session. Response schema varies based on session type.

## Path parameters

- `session_id` string, required — Session ID to get runs from

## Query parameters

- `type` 'agent' | 'team' | 'workflow'
- `user_id` string, nullable — User ID to query runs from
- `created_after` integer, nullable — Filter runs created after this Unix timestamp (epoch time in seconds)
- `created_before` integer, nullable — Filter runs created before this Unix timestamp (epoch time in seconds)
- `db_id` string, nullable — Database ID to query runs from
- `table` string, nullable — Table to query runs from

## Response `200`

Session runs retrieved successfully

- union[]
  - union
    - RunSchema
      - `run_id` string, required — Unique identifier for the run
      - `parent_run_id` string, nullable — Parent run ID if this is a nested run
      - `agent_id` string, nullable — Agent ID that executed this run
      - `user_id` string, nullable — User ID associated with the run
      - `status` string, nullable — Run status (PENDING, RUNNING, COMPLETED, ERROR, etc.)
      - `run_input` string, nullable — Input provided to the run
      - `content` union — Output content from the run
        - string
        - object
      - `run_response_format` string, nullable — Format of the response (text/json)
      - `reasoning_content` string, nullable — Reasoning content if reasoning was enabled
      - `reasoning_steps` object[], nullable — List of reasoning steps
      - `metrics` object, nullable — Performance and usage metrics
      - `messages` object[], nullable — Message history for the run
      - `tools` object[], nullable — Tools used in the run
      - `events` object[], nullable — Events generated during the run
      - `created_at` string, date-time, nullable — Run creation timestamp
      - `references` object[], nullable — References cited in the run
      - `citations` object, nullable — Citations from the model (e.g., from Gemini grounding/search)
      - `reasoning_messages` object[], nullable — Reasoning process messages
      - `session_state` object, nullable — Session state at the end of the run
      - `images` object[], nullable — Images included in the run
      - `videos` object[], nullable — Videos included in the run
      - `audio` object[], nullable — Audio files included in the run
      - `files` object[], nullable — Files included in the run
      - `response_audio` object, nullable — Audio response if generated
      - `input_media` object, nullable — Input media attachments
      - `followups` string[], nullable — Followup suggestions generated after the run
      - `forked_from_run_id` string, nullable — If this run was forked from another run, the source run's ID
      - `forked_from_message_index` integer, nullable — If this run was forked, the message index at which the source was truncated
      - `forked_from_session_id` string, nullable — If this run was created via session branch, the source session's ID
      - `regenerated_from` string, nullable — If this run was produced via regenerate=true, the source run's ID
      - `last_checkpoint_at_message_index` integer, nullable — Message index of the most recent mid-run checkpoint (checkpoint='tool-batch' runs)
    - TeamRunSchema
      - `run_id` string, required — Unique identifier for the team run
      - `parent_run_id` string, nullable — Parent run ID if this is a nested run
      - `team_id` string, nullable — Team ID that executed this run
      - `status` string, nullable — Run status (PENDING, RUNNING, COMPLETED, ERROR, etc.)
      - `content` union — Output content from the team run
        - string
        - object
      - `reasoning_content` string, nullable — Reasoning content if reasoning was enabled
      - `reasoning_steps` object[], nullable — List of reasoning steps
      - `run_input` string, nullable — Input provided to the run
      - `run_response_format` string, nullable — Format of the response (text/json)
      - `metrics` object, nullable — Performance and usage metrics
      - `tools` object[], nullable — Tools used in the run
      - `messages` object[], nullable — Message history for the run
      - `events` object[], nullable — Events generated during the run
      - `created_at` string, date-time, nullable — Run creation timestamp
      - `references` object[], nullable — References cited in the run
      - `citations` object, nullable — Citations from the model (e.g., from Gemini grounding/search)
      - `reasoning_messages` object[], nullable — Reasoning process messages
      - `session_state` object, nullable — Session state at the end of the run
      - `input_media` object, nullable — Input media attachments
      - `images` object[], nullable — Images included in the run
      - `videos` object[], nullable — Videos included in the run
      - `audio` object[], nullable — Audio files included in the run
      - `files` object[], nullable — Files included in the run
      - `response_audio` object, nullable — Audio response if generated
      - `followups` string[], nullable — Followup suggestions generated after the run
      - `forked_from_run_id` string, nullable — If this team run was forked from another run, the source run's ID
      - `forked_from_message_index` integer, nullable — If this team run was forked, the message index at which the source was truncated
      - `forked_from_session_id` string, nullable — If this team run was created via session branch, the source session's ID
      - `regenerated_from` string, nullable — If this team run was produced via regenerate=true, the source run's ID
      - `last_checkpoint_at_message_index` integer, nullable — Message index of the most recent mid-run checkpoint (checkpoint='tool-batch' runs)
    - WorkflowRunSchema
      - `run_id` string, required — Unique identifier for the workflow run
      - `run_input` string, nullable — Input provided to the workflow
      - `events` object[], nullable — Events generated during the workflow
      - `workflow_id` string, nullable — Workflow ID that was executed
      - `user_id` string, nullable — User ID associated with the run
      - `content` union — Output content from the workflow
        - string
        - object
      - `content_type` string, nullable — Type of content returned
      - `status` string, nullable — Status of the workflow run
      - `step_results` object[], nullable — Results from each workflow step
      - `step_executor_runs` object[], nullable — Executor runs for each step
      - `step_requirements` object[], nullable — HITL step requirements (resolved state for historical display)
      - `pause_kind` string, nullable — Kind of HITL pause: 'step' or 'executor'
      - `paused_step_name` string, nullable — Name of the step that caused the pause
      - `paused_step_index` integer, nullable — Index of the step that caused the pause
      - `metrics` object, nullable — Performance and usage metrics
      - `created_at` string, date-time, nullable — Run creation timestamp
      - `reasoning_content` string, nullable — Reasoning content if reasoning was enabled
      - `reasoning_steps` object[], nullable — List of reasoning steps
      - `references` object[], nullable — References cited in the workflow
      - `citations` object, nullable — Citations from the model (e.g., from Gemini grounding/search)
      - `reasoning_messages` object[], nullable — Reasoning process messages
      - `images` object[], nullable — Images included in the workflow
      - `videos` object[], nullable — Videos included in the workflow
      - `audio` object[], nullable — Audio files included in the workflow
      - `files` object[], nullable — Files included in the workflow
      - `response_audio` object, nullable — Audio response if generated

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Session not found or has no runs
- `422` — Invalid session type
- `500` — Internal Server Error

---

[API](https://skmtc.net/agno/apis/agno-api-reference.md) · [All operations](https://skmtc.net/agno/apis/agno-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/agno/agno-api-reference/versions/5f6149d395d0/schema)
