Paginated query of the event history for a Forward Session.
HTTP 200 OK
The fields in the table below do not include the common envelope fields
Request Headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer <PAT> |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
session_id | string | Yes | Session ID. |
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer | No | 20 | Page size, maximum 100. |
after_id | string | No | - | Returns events after this Event ID. |
before_id | string | No | - | Returns events before this Event ID. |
order | string | No | asc | Sort direction: asc or desc. |
type | string | No | - | Filter by Event type; supports comma-separated values. |
types[] | string | No | - | Array-style Event type filter. |
include_tool_calls | boolean | No | true | Whether to include tool call events. |
include_thinking | boolean | No | true | Whether to include thinking events. |
Example Request
Example Response
HTTP 200 OK
Response Fields
Field | Type | Description |
| array | Event objects on the current page. |
| string|null | ID of the first Event on the current page. |
| string|null | ID of the last Event on the current page. |
| boolean | Whether more records remain. |
Event Object Fields
| Field | Type | Description |
|---|---|---|
id | string | Event ID. |
type | string | Event type. |
session_id | string | Session ID. |
processed_at | string | Event processing time; some events may not have this field. |
content | array | Present for message-type events. |
Allowed Payload Fields by Type
The fields in the table below do not include the common envelope fields id, type, session_id, processed_at.
| Event type | payload fields |
|---|---|
user.message | content, file_attachments |
user.interrupt | reason, session_thread_id |
user.tool_confirmation | tool_use_id, result, deny_message, session_thread_id |
user.tool_result | tool_use_id, content, is_error, session_thread_id |
user.custom_tool_result | custom_tool_use_id, content, is_error, session_thread_id |
user.define_outcome | description, rubric, outcome_id, max_iterations |
system.message | content |
agent.message | content |
agent.thinking | None |
agent.message_start | message_id, message |
agent.content_block_start | message_id, index, content_block |
agent.content_block_delta | message_id, index, delta |
agent.content_block_stop | message_id, index |
agent.message_delta | message_id, delta, usage |
agent.message_stop | message_id |
agent.tool_use | name, input, evaluated_permission, session_thread_id |
agent.tool_result | tool_use_id, content, is_error |
agent.custom_tool_use | name, input, session_thread_id |
agent.mcp_tool_use | mcp_server_name, name, input, evaluated_permission, session_thread_id |
agent.mcp_tool_result | mcp_tool_use_id, content, is_error |
agent.artifact_delivered | file_id, original_filename, size, content_type |
session.status_running | None |
session.status_idle | stop_reason |
session.status_terminated | None |
session.error | error |
session.updated | agent, metadata, title |
| Unknown type | Envelope only; runtime-private raw payload is not returned. |
Errors
| HTTP | Type | Code | Trigger |
|---|---|---|---|
| 400 | invalid_request_error | invalid_event_cursor | Cursor does not belong to the current Session. |
| 400 | invalid_request_error | invalid_pagination | Pagination parameters are invalid. |
| 404 | not_found_error | session_not_found | Session does not exist. |
| 401 | authentication_error | TOKEN_INVALID | PAT is invalid or has expired. |
Notes
- Unknown Event types do not cause the request to fail; they are returned with a minimal envelope when available.
- Forward filters out runtime-private fields by default, including agent IDs, environment IDs, resources, vaults, worker, trace, and raw/debug/internal fields.