> For the complete documentation index, see [llms.txt](https://docs.ibexa.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ibexa.ai/developers/rest-api/executions/list-execution-steps.md).

# List Execution Steps

List what the agent did during a run, in the order it happened.

Each step is one tool call and how it turned out, followed by the reply the agent finished on.

`title` and `status` are recorded as the run happens and are available as soon as it ends. `description` is written afterwards by a background job, so it is null on a run that has just finished and stays null if that job could not complete.

Returns an empty list for a run that never got as far as holding a conversation, including one that failed outright — such a run reports its outcome through its own status.

Users can only access executions within their organisation.

```json
{"openapi":"3.1.0","info":{"title":"Ibexa Agentic Marketing Platform","version":"0.1.0"},"security":[{"OAuth2PasswordBearer":[]}],"components":{"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/login/access-token"}}}},"schemas":{"ExecutionStepListResponseSchema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ExecutionStepResponseSchema"},"type":"array","title":"Data","description":"The steps"},"next_cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Cursor","description":"Pass as `cursor` to read the next page. Null on the last page"},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page follows"}},"type":"object","required":["data","next_cursor","has_more"],"title":"ExecutionStepListResponseSchema","description":"A page of an execution's steps, oldest first."},"ExecutionStepResponseSchema":{"properties":{"id":{"type":"integer","title":"Id","description":"Step ID"},"order":{"type":"integer","title":"Order","description":"Position within the run; also the pagination cursor"},"title":{"type":"string","title":"Title","description":"What ran, derived from the tool that was called. Available as soon as the run ends"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"A short account of what happened, written by a background job after the run. Null until that job completes, and permanently null if it could not run — render the step from `title` and treat this as an extra"},"status":{"$ref":"#/components/schemas/ExecutionStepStatus","description":"How the step ended. 'unknown' for steps recorded before outcomes were tracked — it does not mean the step succeeded"},"tool_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Name","description":"Tool that was called. Null for the agent's closing reply"},"tool_args":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Args","description":"Arguments the agent passed to the tool"},"tool_result":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Result","description":"What the tool returned. Failures are kept in full; successful results are truncated"},"mcp_server_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Mcp Server Id","description":"MCP server that served the call, as it was identified at the time. Null for an agent's own response and for tools not backed by an MCP server. Not guaranteed to still resolve: this is a record of what ran, so it keeps naming a server that has since been deleted — read `mcp_server_name` for display and treat a lookup failure as expected"},"mcp_server_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Server Name","description":"Name of the MCP server as it was at the time of the call, stored alongside the id so the record survives that server being renamed or deleted"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the step was recorded"}},"type":"object","required":["id","order","title","description","status","tool_name","tool_args","tool_result","mcp_server_id","mcp_server_name","created_at"],"title":"ExecutionStepResponseSchema","description":"One thing the agent did during a run."},"ExecutionStepStatus":{"type":"string","enum":["completed","failed","unknown"],"title":"ExecutionStepStatus","description":"How one step of a run turned out.\n\n`UNKNOWN` is a real answer, not a placeholder. Steps recorded before tool\noutcomes were persisted cannot be classified, and a step shown as completed\nwhen nobody knows whether it was is worse than one shown as unknown."}}},"paths":{"/api/v1/executions/{execution_id}/steps":{"get":{"tags":["executions","public"],"summary":"List Execution Steps","description":"List what the agent did during a run, in the order it happened.\n\nEach step is one tool call and how it turned out, followed by the reply the\nagent finished on.\n\n`title` and `status` are recorded as the run happens and are available as\nsoon as it ends. `description` is written afterwards by a background job, so\nit is null on a run that has just finished and stays null if that job could\nnot complete.\n\nReturns an empty list for a run that never got as far as holding a\nconversation, including one that failed outright — such a run reports its\noutcome through its own status.\n\nUsers can only access executions within their organisation.","operationId":"executions-list_execution_steps","parameters":[{"name":"execution_id","in":"path","required":true,"schema":{"type":"integer","title":"Execution Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Resume after this step's `order`. Omit to start from the beginning of the run","title":"Cursor"},"description":"Resume after this step's `order`. Omit to start from the beginning of the run"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of steps to return","default":25,"title":"Limit"},"description":"Maximum number of steps to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionStepListResponseSchema"}}}},"401":{"description":"User not authenticated","content":{"application/json":{}}},"403":{"description":"User lacks permission","content":{"application/json":{}}},"404":{"description":"Resource not found or user has no permission to access it","content":{"application/json":{}}}}}}}}
```
