Skip to content

List Messages Paginated

GET/messages/paginated

List messages for a task with cursor-based pagination.

This endpoint is designed for infinite scroll UIs where new messages may arrive while paginating through older ones.

Args: task_id: The task ID to filter messages by limit: Maximum number of messages to return (default: 50) cursor: Opaque cursor string for pagination. Pass the next_cursor from a previous response to get the next page. direction: Pagination direction - “older” to get older messages (default), “newer” to get newer messages.

Returns: PaginatedMessagesResponse with: - data: List of messages (newest first when direction=“older”) - next_cursor: Cursor for fetching the next page (null if no more pages) - has_more: Whether there are more messages to fetch

Example: First request: GET /messages/paginated?task_id=xxx&limit=50 Next page: GET /messages/paginated?task_id=xxx&limit=50&cursor=<next_cursor>

Query ParametersExpand Collapse
task_id: string

The task ID

cursor: optional string
direction: optional "older" or "newer"
One of the following:
"older"
"newer"
filters: optional string

JSON-encoded array of TaskMessageEntityFilter objects.

Schema: { “$defs”: { “DataContentEntityOptional”: { “properties”: { “type”: { “anyOf”: [ { “const”: “data”, “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The type of the message, in this case data.”, “title”: “Type” }, “author”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageAuthor” }, { “type”: “null” } ], “default”: null, “description”: “The role of the messages author, in this case system, user, assistant, or tool.” }, “style”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageStyle” }, { “type”: “null” } ], “default”: null, “description”: “The style of the message. This is used by the client to determine how to display the message.” }, “data”: { “anyOf”: [ { “additionalProperties”: true, “type”: “object” }, { “type”: “null” } ], “default”: null, “description”: “The contents of the data message.”, “title”: “Data” } }, “title”: “DataContentEntityOptional”, “type”: “object” }, “FileAttachmentEntity”: { “description”: “Represents a file attachment in messages.”, “properties”: { “file_id”: { “description”: “The unique ID of the attached file”, “title”: “File Id”, “type”: “string” }, “name”: { “description”: “The name of the file”, “title”: “Name”, “type”: “string” }, “size”: { “description”: “The size of the file in bytes”, “title”: “Size”, “type”: “integer” }, “type”: { “description”: “The MIME type or content type of the file”, “title”: “Type”, “type”: “string” } }, “required”: [ “file_id”, “name”, “size”, “type” ], “title”: “FileAttachmentEntity”, “type”: “object” }, “MessageAuthor”: { “enum”: [ “user”, “agent” ], “title”: “MessageAuthor”, “type”: “string” }, “MessageStyle”: { “enum”: [ “static”, “active” ], “title”: “MessageStyle”, “type”: “string” }, “ReasoningContentEntityOptional”: { “properties”: { “type”: { “anyOf”: [ { “const”: “reasoning”, “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The type of the message, in this case reasoning.”, “title”: “Type” }, “author”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageAuthor” }, { “type”: “null” } ], “default”: null, “description”: “The role of the messages author, in this case system, user, assistant, or tool.” }, “style”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageStyle” }, { “type”: “null” } ], “default”: null, “description”: “The style of the message. This is used by the client to determine how to display the message.” }, “summary”: { “anyOf”: [ { “items”: { “type”: “string” }, “type”: “array” }, { “type”: “null” } ], “default”: null, “description”: “A list of short reasoning summaries”, “title”: “Summary” }, “content”: { “anyOf”: [ { “items”: { “type”: “string” }, “type”: “array” }, { “type”: “null” } ], “default”: null, “description”: “The reasoning content or chain-of-thought text”, “title”: “Content” } }, “title”: “ReasoningContentEntityOptional”, “type”: “object” }, “TextContentEntityOptional”: { “properties”: { “type”: { “anyOf”: [ { “const”: “text”, “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The type of the message, in this case text.”, “title”: “Type” }, “author”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageAuthor” }, { “type”: “null” } ], “default”: null, “description”: “The role of the messages author, in this case system, user, assistant, or tool.” }, “style”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageStyle” }, { “type”: “null” } ], “default”: null, “description”: “The style of the message. This is used by the client to determine how to display the message.” }, “format”: { “anyOf”: [ { “$ref”: ”#/$defs/TextFormat” }, { “type”: “null” } ], “default”: null, “description”: “The format of the message. This is used by the client to determine how to display the message.” }, “content”: { “anyOf”: [ { “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The contents of the text message.”, “title”: “Content” }, “attachments”: { “anyOf”: [ { “items”: { “$ref”: ”#/$defs/FileAttachmentEntity” }, “type”: “array” }, { “type”: “null” } ], “default”: null, “description”: “Optional list of file attachments with structured metadata.”, “title”: “Attachments” } }, “title”: “TextContentEntityOptional”, “type”: “object” }, “TextFormat”: { “enum”: [ “markdown”, “plain”, “code” ], “title”: “TextFormat”, “type”: “string” }, “ToolRequestContentEntityOptional”: { “properties”: { “type”: { “anyOf”: [ { “const”: “tool_request”, “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The type of the message, in this case tool_request.”, “title”: “Type” }, “author”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageAuthor” }, { “type”: “null” } ], “default”: null, “description”: “The role of the messages author, in this case system, user, assistant, or tool.” }, “style”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageStyle” }, { “type”: “null” } ], “default”: null, “description”: “The style of the message. This is used by the client to determine how to display the message.” }, “tool_call_id”: { “anyOf”: [ { “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The ID of the tool call that is being requested.”, “title”: “Tool Call Id” }, “name”: { “anyOf”: [ { “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The name of the tool that is being requested.”, “title”: “Name” }, “arguments”: { “anyOf”: [ { “additionalProperties”: true, “type”: “object” }, { “type”: “null” } ], “default”: null, “description”: “The arguments to the tool.”, “title”: “Arguments” } }, “title”: “ToolRequestContentEntityOptional”, “type”: “object” }, “ToolResponseContentEntityOptional”: { “properties”: { “type”: { “anyOf”: [ { “const”: “tool_response”, “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The type of the message, in this case tool_response.”, “title”: “Type” }, “author”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageAuthor” }, { “type”: “null” } ], “default”: null, “description”: “The role of the messages author, in this case system, user, assistant, or tool.” }, “style”: { “anyOf”: [ { “$ref”: ”#/$defs/MessageStyle” }, { “type”: “null” } ], “default”: null, “description”: “The style of the message. This is used by the client to determine how to display the message.” }, “tool_call_id”: { “anyOf”: [ { “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The ID of the tool call that is being responded to.”, “title”: “Tool Call Id” }, “name”: { “anyOf”: [ { “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “The name of the tool that is being responded to.”, “title”: “Name” }, “content”: { “anyOf”: [ {}, { “type”: “null” } ], “default”: null, “description”: “The result of the tool.”, “title”: “Content” }, “is_error”: { “anyOf”: [ { “type”: “boolean” }, { “type”: “null” } ], “default”: null, “description”: “Whether the tool call resulted in an error. None when the harness does not report a status.”, “title”: “Is Error” } }, “title”: “ToolResponseContentEntityOptional”, “type”: “object” } }, “description”: “Filter model for TaskMessage - all fields optional for flexible filtering.\n\nThe exclude field determines whether this filter is inclusionary or exclusionary.\nWhen multiple filters are provided:\n- Inclusionary filters (exclude=False) are OR’d together\n- Exclusionary filters (exclude=True) are OR’d together and negated with $nor\n- The two groups are AND’d: (include1 OR include2) AND NOT (exclude1 OR exclude2)”, “properties”: { “content”: { “anyOf”: [ { “$ref”: ”#/$defs/ToolRequestContentEntityOptional” }, { “$ref”: ”#/$defs/DataContentEntityOptional” }, { “$ref”: ”#/$defs/TextContentEntityOptional” }, { “$ref”: ”#/$defs/ToolResponseContentEntityOptional” }, { “$ref”: ”#/$defs/ReasoningContentEntityOptional” }, { “type”: “null” } ], “default”: null, “description”: “Filter by message content”, “title”: “Content” }, “streaming_status”: { “anyOf”: [ { “enum”: [ “IN_PROGRESS”, “DONE” ], “type”: “string” }, { “type”: “null” } ], “default”: null, “description”: “Filter by streaming status”, “title”: “Streaming Status” }, “exclude”: { “default”: false, “description”: “If true, this filter excludes matching messages”, “title”: “Exclude”, “type”: “boolean” } }, “title”: “TaskMessageEntityFilter”, “type”: “object” }

Each filter can include:

  • content: Filter by message content (type, author, data fields)
  • streaming_status: Filter by status (“IN_PROGRESS” or “DONE”)
  • exclude: If true, excludes matching messages (default: false)

Multiple filters are combined: inclusionary filters (exclude=false) are OR’d together, exclusionary filters (exclude=true) are OR’d and negated, then both groups are AND’d.

limit: optional number
ReturnsExpand Collapse
data: array of TaskMessage { content, task_id, id, 3 more }

List of messages

The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

One of the following:
TextContent object { author, content, attachments, 3 more }

The role of the messages author, in this case system, user, assistant, or tool.

One of the following:
"user"
"agent"
content: string

The contents of the text message.

attachments: optional array of object { file_id, name, size, type }

Optional list of file attachments with structured metadata.

file_id: string

The unique ID of the attached file

name: string

The name of the file

size: number

The size of the file in bytes

type: string

The MIME type or content type of the file

format: optional TextFormat

The format of the message. This is used by the client to determine how to display the message.

One of the following:
"markdown"
"plain"
"code"
style: optional MessageStyle

The style of the message. This is used by the client to determine how to display the message.

One of the following:
"static"
"active"
type: optional "text"

The type of the message, in this case text.

ReasoningContent object { author, summary, content, 2 more }

The role of the messages author, in this case system, user, assistant, or tool.

One of the following:
"user"
"agent"
summary: array of string

A list of short reasoning summaries

content: optional array of string

The reasoning content or chain-of-thought text

style: optional MessageStyle

The style of the message. This is used by the client to determine how to display the message.

One of the following:
"static"
"active"
type: optional "reasoning"

The type of the message, in this case reasoning.

DataContent object { author, data, style, type }

The role of the messages author, in this case system, user, assistant, or tool.

One of the following:
"user"
"agent"
data: map[unknown]

The contents of the data message.

style: optional MessageStyle

The style of the message. This is used by the client to determine how to display the message.

One of the following:
"static"
"active"
type: optional "data"

The type of the message, in this case data.

ToolRequestContent object { arguments, author, name, 3 more }
arguments: map[unknown]

The arguments to the tool.

The role of the messages author, in this case system, user, assistant, or tool.

One of the following:
"user"
"agent"
name: string

The name of the tool that is being requested.

tool_call_id: string

The ID of the tool call that is being requested.

style: optional MessageStyle

The style of the message. This is used by the client to determine how to display the message.

One of the following:
"static"
"active"
type: optional "tool_request"

The type of the message, in this case tool_request.

ToolResponseContent object { author, content, name, 4 more }

The role of the messages author, in this case system, user, assistant, or tool.

One of the following:
"user"
"agent"
content: unknown

The result of the tool.

name: string

The name of the tool that is being responded to.

tool_call_id: string

The ID of the tool call that is being responded to.

is_error: optional boolean

Whether the tool call resulted in an error. None when the harness does not report a status.

style: optional MessageStyle

The style of the message. This is used by the client to determine how to display the message.

One of the following:
"static"
"active"
type: optional "tool_response"

The type of the message, in this case tool_response.

task_id: string

ID of the task this message belongs to

id: optional string

The task message’s unique id

created_at: optional string

The timestamp when the message was created

formatdate-time
streaming_status: optional "IN_PROGRESS" or "DONE"
One of the following:
"IN_PROGRESS"
"DONE"
updated_at: optional string

The timestamp when the message was last updated

formatdate-time
has_more: optional boolean

Whether there are more messages to fetch

next_cursor: optional string

Cursor for fetching the next page of older messages

List Messages Paginated

curl http://localhost:5003/messages/paginated \
    -H "Authorization: Bearer $AGENTEX_SDK_API_KEY"
{
  "data": [
    {
      "content": {
        "author": "user",
        "content": "content",
        "attachments": [
          {
            "file_id": "file_id",
            "name": "name",
            "size": 0,
            "type": "type"
          }
        ],
        "format": "markdown",
        "style": "static",
        "type": "text"
      },
      "task_id": "task_id",
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "streaming_status": "IN_PROGRESS",
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "has_more": true,
  "next_cursor": "next_cursor"
}
Returns Examples
{
  "data": [
    {
      "content": {
        "author": "user",
        "content": "content",
        "attachments": [
          {
            "file_id": "file_id",
            "name": "name",
            "size": 0,
            "type": "type"
          }
        ],
        "format": "markdown",
        "style": "static",
        "type": "text"
      },
      "task_id": "task_id",
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "streaming_status": "IN_PROGRESS",
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "has_more": true,
  "next_cursor": "next_cursor"
}