---
title: Resume Chat Stream
description: Resumes consumption of the active assistant generation as Server-Sent Events. If the latest message has already finished, returns a closing chat-state event. The response is `text/event-stream`; each event is `data: <JSON>\n\n` where the JSON conforms to ChatStreamEvent.
product: Platform API
type: reference
prerequisites:
  - /docs/api/platform/quickstart
---

# Resume Chat Stream



<EndpointDisplay method="post" path="/chats/{chatId}/resume" 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.chats.resume({
  chatId: 'chat_abc123',
})

console.log(result)`"
  />

  <CodeVariant
    language="cURL"
    title="cURL Example"
    code="`curl -X POST &#x22;https://api.v0.dev/api/v2/chats/chat_abc123/resume&#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
  }
]"
/>

### Response (Stream) [#response-stream]

The response is a `text/event-stream`. Each event is `data: <JSON>\n\n` where the JSON conforms to one of the following event types:

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;event&#x22;,
    &#x22;type&#x22;: &#x22;'chat' | 'chat.title' | 'message.parts.chunk' | 'message.usage' | 'error'&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;A single Server-Sent Events payload emitted by streaming chat endpoints. Each SSE event is `data: <JSON>\\n\\n` where the JSON conforms to one of the union members.&#x22;,
    &#x22;deprecated&#x22;: false,
    &#x22;variants&#x22;: [
      {
        &#x22;name&#x22;: &#x22;chat&#x22;,
        &#x22;description&#x22;: &#x22;Initial and final chat-state event. Emitted once at stream open with the freshly-created chat, and once at stream close with the chat including the completed assistant message.&#x22;,
        &#x22;properties&#x22;: [
          {
            &#x22;name&#x22;: &#x22;id&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Unique chat identifier.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;title&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Chat title, if generated.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;privacy&#x22;,
            &#x22;type&#x22;: &#x22;'public' | 'private' | 'team' | 'team-edit' | 'unlisted'&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Visibility setting of the chat.&#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 of when the chat was created.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;updatedAt&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;ISO timestamp of when the chat was last updated.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;authorId&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;ID of the user who created the chat.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;vercelProjectId&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Associated Vercel project ID, if any.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;metadata&#x22;,
            &#x22;type&#x22;: &#x22;Record<string, string>&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;User-defined key-value metadata.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;writePermission&#x22;,
            &#x22;type&#x22;: &#x22;boolean&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Whether the caller has write access to this chat.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;object&#x22;,
            &#x22;type&#x22;: &#x22;'chat'&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Discriminator: a chat-state snapshot.&#x22;,
            &#x22;deprecated&#x22;: false
          }
        ]
      },
      {
        &#x22;name&#x22;: &#x22;chat.title&#x22;,
        &#x22;description&#x22;: &#x22;Emitted when the chat title is (re)generated.&#x22;,
        &#x22;properties&#x22;: [
          {
            &#x22;name&#x22;: &#x22;id&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Chat ID.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;object&#x22;,
            &#x22;type&#x22;: &#x22;'chat.title'&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Discriminator.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;delta&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Full title string at this point in the stream.&#x22;,
            &#x22;deprecated&#x22;: false
          }
        ]
      },
      {
        &#x22;name&#x22;: &#x22;message.parts.chunk&#x22;,
        &#x22;description&#x22;: &#x22;Incremental update to the assistant message content.&#x22;,
        &#x22;properties&#x22;: [
          {
            &#x22;name&#x22;: &#x22;id&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Assistant message ID.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;object&#x22;,
            &#x22;type&#x22;: &#x22;'message.parts.chunk'&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Discriminator.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;delta&#x22;,
            &#x22;type&#x22;: &#x22;unknown&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;jsondiffpatch delta to apply against the running `parts` tree. To reconstruct streaming text, apply each delta in order using the jsondiffpatch library.&#x22;,
            &#x22;deprecated&#x22;: false
          }
        ]
      },
      {
        &#x22;name&#x22;: &#x22;message.usage&#x22;,
        &#x22;description&#x22;: &#x22;Final token usage and credit cost for the assistant message produced by this stream. Emitted once after the message finishes generating, before the closing state event.&#x22;,
        &#x22;properties&#x22;: [
          {
            &#x22;name&#x22;: &#x22;id&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Assistant message ID this usage applies to.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;object&#x22;,
            &#x22;type&#x22;: &#x22;'message.usage'&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Discriminator.&#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 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;error&#x22;,
        &#x22;description&#x22;: &#x22;Emitted when a stream error occurs after the SSE response begins.&#x22;,
        &#x22;properties&#x22;: [
          {
            &#x22;name&#x22;: &#x22;id&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Assistant message ID or chat ID, depending on what is in scope when the error is raised.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;object&#x22;,
            &#x22;type&#x22;: &#x22;'error'&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Discriminator.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;message&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;Human-readable stream error message.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;code&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Optional machine-readable stream error code.&#x22;,
            &#x22;deprecated&#x22;: false
          }
        ]
      }
    ]
  }
]"
/>
