---
title: Get Messages
description: Get all messages in a chat.
product: Platform API
type: reference
prerequisites:
  - /docs/api/platform/quickstart
---

# Get Messages



<EndpointDisplay method="get" path="/chats/{chatId}/messages" versionPrefix="/v2" />

## Usage [#usage]

<CustomCodeBlock languages="['TypeScript', 'cURL']" defaultLanguage="TypeScript">
  <CodeVariant
    language="TypeScript"
    title="TypeScript Example"
    code="`import { v0 } from 'v0-sdk'

const result = await v0.messages.list({
  chatId: 'chat_abc123',
})

console.log(result)`"
  />

  <CodeVariant
    language="cURL"
    title="cURL Example"
    code="`curl -X GET &#x22;https://api.v0.dev/api/v2/chats/chat_abc123/messages&#x22; \
  -H &#x22;Authorization: Bearer $V0_API_KEY&#x22; \
  -H &#x22;Content-Type: application/json&#x22;`"
  />
</CustomCodeBlock>

## API Signature [#api-signature]

### Request [#request]

#### Path Parameters [#path-parameters]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;chatId&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The unique identifier of the chat.&#x22;,
    &#x22;deprecated&#x22;: false
  }
]"
/>

#### Query Parameters [#query-parameters]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;limit&#x22;,
    &#x22;type&#x22;: &#x22;integer&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;Maximum number of messages to return (1-100, default 20).&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;cursor&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;Pagination cursor returned from a previous response.&#x22;,
    &#x22;deprecated&#x22;: false
  }
]"
/>

### Response [#response]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;messages&#x22;,
    &#x22;type&#x22;: &#x22;object[]&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The messages in this page, newest first.&#x22;,
    &#x22;deprecated&#x22;: false,
    &#x22;arrayItems&#x22;: {
      &#x22;name&#x22;: &#x22;item&#x22;,
      &#x22;type&#x22;: &#x22;object&#x22;,
      &#x22;required&#x22;: true,
      &#x22;description&#x22;: &#x22;A single message in a chat.&#x22;,
      &#x22;deprecated&#x22;: false,
      &#x22;properties&#x22;: [
        {
          &#x22;name&#x22;: &#x22;id&#x22;,
          &#x22;type&#x22;: &#x22;string&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;Unique message identifier.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;chatId&#x22;,
          &#x22;type&#x22;: &#x22;string&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;ID of the chat this message belongs to.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;role&#x22;,
          &#x22;type&#x22;: &#x22;'user' | 'assistant'&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;Who produced this message.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;createdAt&#x22;,
          &#x22;type&#x22;: &#x22;string&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;ISO timestamp when the message was created.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;updatedAt&#x22;,
          &#x22;type&#x22;: &#x22;string&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;ISO timestamp when the message was last updated.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;content&#x22;,
          &#x22;type&#x22;: &#x22;string&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;The trailing prose of the message — the agent’s closing summary, or the user’s message text. Empty string when there is no closing prose.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;parts&#x22;,
          &#x22;type&#x22;: &#x22;('text' | 'thinking' | 'file-read' | 'file-edit' | 'search' | 'bash' | 'tool-call' | 'agent-action')[]&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;Ordered list of parts that make up the message. Iterate to render the full narrative including thinking, file operations, tool calls, and prose.&#x22;,
          &#x22;deprecated&#x22;: false,
          &#x22;variants&#x22;: [
            {
              &#x22;name&#x22;: &#x22;text&#x22;,
              &#x22;description&#x22;: &#x22;A block of text output by the agent.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'text'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;text&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Markdown prose written by the agent or user.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;thinking&#x22;,
              &#x22;description&#x22;: &#x22;Extended thinking output by the agent.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'thinking'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;text&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The agent's reasoning trace.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;file-read&#x22;,
              &#x22;description&#x22;: &#x22;Files read by the agent.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'file-read'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;paths&#x22;,
                  &#x22;type&#x22;: &#x22;string[]&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The file paths the agent read in this step.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;file-edit&#x22;,
              &#x22;description&#x22;: &#x22;The agent created, modified, deleted, renamed, or patched a file.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'file-edit'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;operation&#x22;,
                  &#x22;type&#x22;: &#x22;'create' | 'update' | 'delete' | 'rename' | 'patch'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The type of file edit performed.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;path&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The target file path.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;toPath&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;The new path when operation is \&#x22;rename\&#x22;.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;search&#x22;,
              &#x22;description&#x22;: &#x22;The agent searched for something.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'search'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;scope&#x22;,
                  &#x22;type&#x22;: &#x22;'repo' | 'web'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Whether the agent searched the repository or the web.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;query&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The search query.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;bash&#x22;,
              &#x22;description&#x22;: &#x22;The agent ran a shell command.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'bash'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;command&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The shell command that was executed.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;output&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;Combined stdout/stderr captured from the terminal. May be empty if the command produced no output.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;exitCode&#x22;,
                  &#x22;type&#x22;: &#x22;integer | null&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;Process exit code, when available. Reserved for future use; currently always omitted.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;isDangerous&#x22;,
                  &#x22;type&#x22;: &#x22;boolean&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;True if the command was flagged as potentially dangerous and required explicit user approval.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;timeoutMs&#x22;,
                  &#x22;type&#x22;: &#x22;integer&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;Command timeout in milliseconds, when configured.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;tool-call&#x22;,
              &#x22;description&#x22;: &#x22;The agent invoked a tool (MCP, integration, or other dynamic tool). For shell commands, use the \&#x22;bash\&#x22; part instead.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'tool-call'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;name&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;The name of the tool that was invoked (e.g. an MCP tool name or built-in tool identifier).&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;input&#x22;,
                  &#x22;type&#x22;: &#x22;unknown&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;The arguments passed to the tool. Schema depends on the specific tool.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;output&#x22;,
                  &#x22;type&#x22;: &#x22;unknown&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;The result returned by the tool. Schema depends on the specific tool.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;status&#x22;,
                  &#x22;type&#x22;: &#x22;'ok' | 'error'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Whether the tool call succeeded or returned an error.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;agent-action&#x22;,
              &#x22;description&#x22;: &#x22;A typed escape hatch for agent actions that don’t fit the other part types. Forward-compatible: new action types may appear without API version changes.&#x22;,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;type&#x22;,
                  &#x22;type&#x22;: &#x22;'agent-action'&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;name&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Stable identifier for the action (e.g. \&#x22;generate_image\&#x22;, \&#x22;manage_todos\&#x22;, \&#x22;diagnostics\&#x22;). See documentation for the registry of known names.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;summary&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;A short human-readable summary of what happened. Always populated so clients can render something even without knowing the action name.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;data&#x22;,
                  &#x22;type&#x22;: &#x22;unknown&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;Optional structured data specific to the action. Treat as opaque unless you handle this action name explicitly.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;startedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part began.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;finishedAt&#x22;,
                  &#x22;type&#x22;: &#x22;string&#x22;,
                  &#x22;required&#x22;: false,
                  &#x22;description&#x22;: &#x22;ISO timestamp when this part completed.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            }
          ]
        },
        {
          &#x22;name&#x22;: &#x22;finishReason&#x22;,
          &#x22;type&#x22;: &#x22;'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other' | null&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;Why generation ended. Null while the agent is still generating; once non-null, the message is final and safe to consume.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;attachments&#x22;,
          &#x22;type&#x22;: &#x22;object[]&#x22;,
          &#x22;required&#x22;: false,
          &#x22;description&#x22;: &#x22;Files attached to this message.&#x22;,
          &#x22;deprecated&#x22;: false,
          &#x22;arrayItems&#x22;: {
            &#x22;name&#x22;: &#x22;item&#x22;,
            &#x22;type&#x22;: &#x22;object&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;&#x22;,
            &#x22;deprecated&#x22;: false,
            &#x22;properties&#x22;: [
              {
                &#x22;name&#x22;: &#x22;url&#x22;,
                &#x22;type&#x22;: &#x22;string&#x22;,
                &#x22;required&#x22;: true,
                &#x22;description&#x22;: &#x22;URL to the attachment.&#x22;,
                &#x22;deprecated&#x22;: false
              },
              {
                &#x22;name&#x22;: &#x22;name&#x22;,
                &#x22;type&#x22;: &#x22;string&#x22;,
                &#x22;required&#x22;: false,
                &#x22;description&#x22;: &#x22;Original filename, when available.&#x22;,
                &#x22;deprecated&#x22;: false
              },
              {
                &#x22;name&#x22;: &#x22;contentType&#x22;,
                &#x22;type&#x22;: &#x22;string&#x22;,
                &#x22;required&#x22;: false,
                &#x22;description&#x22;: &#x22;MIME type.&#x22;,
                &#x22;deprecated&#x22;: false
              },
              {
                &#x22;name&#x22;: &#x22;size&#x22;,
                &#x22;type&#x22;: &#x22;integer&#x22;,
                &#x22;required&#x22;: false,
                &#x22;description&#x22;: &#x22;Size in bytes.&#x22;,
                &#x22;deprecated&#x22;: false
              }
            ]
          }
        },
        {
          &#x22;name&#x22;: &#x22;authorId&#x22;,
          &#x22;type&#x22;: &#x22;string | null&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;ID of the user who authored a user message; null for assistant messages.&#x22;,
          &#x22;deprecated&#x22;: false
        },
        {
          &#x22;name&#x22;: &#x22;usage&#x22;,
          &#x22;type&#x22;: &#x22;object&#x22;,
          &#x22;required&#x22;: true,
          &#x22;description&#x22;: &#x22;Token usage and credit cost. All values are zero on user messages and on assistant messages that have not yet generated tokens.&#x22;,
          &#x22;deprecated&#x22;: false,
          &#x22;properties&#x22;: [
            {
              &#x22;name&#x22;: &#x22;tokens&#x22;,
              &#x22;type&#x22;: &#x22;object&#x22;,
              &#x22;required&#x22;: true,
              &#x22;description&#x22;: &#x22;Token counts for this message.&#x22;,
              &#x22;deprecated&#x22;: false,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;input&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Prompt input value (non-cached).&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;output&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Completion output value.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;cacheRead&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Cache-read input value.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;cacheWrite&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Cache-write input value.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;total&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Sum of input, output, cacheRead, and cacheWrite.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            },
            {
              &#x22;name&#x22;: &#x22;creditsCost&#x22;,
              &#x22;type&#x22;: &#x22;object&#x22;,
              &#x22;required&#x22;: true,
              &#x22;description&#x22;: &#x22;Credit cost for this message.&#x22;,
              &#x22;deprecated&#x22;: false,
              &#x22;properties&#x22;: [
                {
                  &#x22;name&#x22;: &#x22;input&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Prompt input value (non-cached).&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;output&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Completion output value.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;cacheRead&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Cache-read input value.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;cacheWrite&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Cache-write input value.&#x22;,
                  &#x22;deprecated&#x22;: false
                },
                {
                  &#x22;name&#x22;: &#x22;total&#x22;,
                  &#x22;type&#x22;: &#x22;number&#x22;,
                  &#x22;required&#x22;: true,
                  &#x22;description&#x22;: &#x22;Sum of input, output, cacheRead, and cacheWrite.&#x22;,
                  &#x22;deprecated&#x22;: false
                }
              ]
            }
          ]
        }
      ]
    }
  },
  {
    &#x22;name&#x22;: &#x22;cursor&#x22;,
    &#x22;type&#x22;: &#x22;string | null&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;Cursor to fetch the next page, or null if there are no more messages.&#x22;,
    &#x22;deprecated&#x22;: false
  }
]"
/>
