---
title: "Create Chat (Streaming)"
method: POST
path: "/chats/stream"
tags: ["Chats"]
---

# Create Chat (Streaming)

`POST /chats/stream`

Creates a new chat with a user message and returns a Server-Sent Events stream. Events include initial chat state, title deltas, content chunk deltas, and final chat state. The response is `text/event-stream`; each event is `data: <JSON>\n\n` where the JSON conforms to ChatStreamEvent.

## Request body

- object
  - `message` string, required — The prompt or instruction to send to the model.
  - `systemPrompt` string — System-level context for the chat, such as frameworks or development environment details.
  - `modelConfiguration` object — Overrides for the model behavior.
    - `modelId` 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast', required — Model to use for the generation.
    - `imageGenerations` boolean, required — Enables image generations to generate up to 5 images per version.
  - `attachments` union[] — Files or assets to include with the message. Provide either a URL or data URI, or inline UTF-8 text content.
    - union
      - object
        - `url` string, required — URL or data URI containing the attachment.
      - object
        - `name` string — Display name for the inline text attachment.
        - `content` string, required — UTF-8 text content of the attachment.
  - `mcpServerIds` string[] — MCP server IDs to enable. When omitted, uses default enabled servers.
  - `skills` union[] — Skills to force-attach to the chat. Supports skills.sh (`remote`), user/team memory (`memory`), and project (`project`) skills. Maximum 3.
    - union — A skill to force-attach to the chat. Skills provide domain-specific knowledge to the AI. Use `remote` for skills.sh skills, `memory` for user/team memory skills (including design-system skills), and `project` for skills defined in the chat repo.
      - object
        - `type` 'remote', required — Discriminator: a skills.sh skill.
        - `id` string, required — Skill ID from skills.sh.
      - object
        - `type` 'memory', required — Discriminator: a user- or team-scoped memory skill.
        - `scope` 'user' | 'team', required — Whether the skill lives in user or team memory.
        - `skillName` string, required — Name of the memory skill to attach.
      - object
        - `type` 'project', required — Discriminator: a skill defined in the project repo.
        - `skillName` string, required — Name of the project skill to attach.
  - `privacy` 'public' | 'private' | 'team' | 'team-edit' | 'unlisted' — Visibility setting for the new chat.
  - `title` string — Title for the new chat.
  - `metadata` object — Arbitrary key-value data to attach to the chat.

## Response `200`

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.

## Other responses

- `401` — Response for status 401
- `403` — Response for status 403
- `404` — Response for status 404
- `422` — Response for status 422
- `500` — Response for status 500

## Changes

> 34 revisions in range; 5 could not be searched.

- **2026-07-30** `da68370a2aea` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/vercel/apis/v0-platform-api-beta/changes/chats/stream/post.md)

---

[API](https://skmtc.dev/vercel/apis/v0-platform-api-beta.md) · [All operations](https://skmtc.dev/vercel/apis/v0-platform-api-beta/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/vercel/v0-platform-api-beta/revisions/3cf5debd6cf4/schema)
