---
title: "Create Chat"
method: POST
path: "/chats"
tags: ["Chats"]
---

# Create Chat

`POST /chats`

Creates a new chat from a prompt. The request blocks until the model response is complete and returns the chat.

## 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` object[] — Files or assets to include with the message.
    - `url` string, required — URL 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 chat response that also reports the usage.

- ChatWithUsage — A chat response that also reports the usage.
  - `chat` object, required
    - `id` string, required — Unique chat identifier.
    - `title` string — Chat title, if generated.
    - `privacy` 'public' | 'private' | 'team' | 'team-edit' | 'unlisted', required — Visibility setting of the chat.
    - `createdAt` string, date-time, required — ISO timestamp of when the chat was created.
    - `updatedAt` string, date-time — ISO timestamp of when the chat was last updated.
    - `authorId` string, required — ID of the user who created the chat.
    - `vercelProjectId` string — Associated Vercel project ID, if any.
    - `metadata` object, required — User-defined key-value metadata.
    - `writePermission` boolean, required — Whether the caller has write access to this chat.
  - `usage` object, required — Token usage and credit cost for prompt.
    - `tokens` object, required — Token counts for this message.
      - `input` number, required — Prompt input value (non-cached).
      - `output` number, required — Completion output value.
      - `cacheRead` number, required — Cache-read input value.
      - `cacheWrite` number, required — Cache-write input value.
      - `total` number, required — Sum of input, output, cacheRead, and cacheWrite.
    - `creditsCost` object, required — Credit cost for this message.
      - `input` number, required — Prompt input value (non-cached).
      - `output` number, required — Completion output value.
      - `cacheRead` number, required — Cache-read input value.
      - `cacheWrite` number, required — Cache-write input value.
      - `total` number, required — Sum of input, output, cacheRead, and cacheWrite.

## 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

---

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