---
title: Send Message (Async)
description: Sends a new message to an existing chat and processes it in the background. Returns immediately with the assistant message ID. Poll GET /chats/:chatId/messages/:messageId and check `finishReason` to detect completion.
product: Platform API
type: reference
prerequisites:
  - /docs/api/platform/quickstart
---

# Send Message (Async)



<EndpointDisplay method="post" path="/chats/{chatId}/messages/async" 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.sendAsync({
  chatId: 'chat_abc123',
  message: 'Hello, world!',
})

console.log(result)`"
  />

  <CodeVariant
    language="cURL"
    title="cURL Example"
    code="`curl -X POST &#x22;https://api.v0.dev/api/v2/chats/chat_abc123/messages/async&#x22; \
  -H &#x22;Authorization: Bearer $V0_API_KEY&#x22; \
  -H &#x22;Content-Type: application/json&#x22; \
  -d '{&#x22;message&#x22;:&#x22;Hello, world!&#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
  }
]"
/>

#### Request Body [#request-body]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;message&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The prompt or instruction to send to the model.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;systemPrompt&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;System-level context for the chat, such as frameworks or development environment details.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;modelConfiguration&#x22;,
    &#x22;type&#x22;: &#x22;object&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;Overrides for the model behavior.&#x22;,
    &#x22;deprecated&#x22;: false,
    &#x22;properties&#x22;: [
      {
        &#x22;name&#x22;: &#x22;modelId&#x22;,
        &#x22;type&#x22;: &#x22;'v0-auto' | 'v0-mini' | 'v0-pro' | 'v0-max' | 'v0-max-fast'&#x22;,
        &#x22;required&#x22;: true,
        &#x22;description&#x22;: &#x22;Model to use for the generation.&#x22;,
        &#x22;deprecated&#x22;: false
      },
      {
        &#x22;name&#x22;: &#x22;imageGenerations&#x22;,
        &#x22;type&#x22;: &#x22;boolean&#x22;,
        &#x22;required&#x22;: true,
        &#x22;description&#x22;: &#x22;Enables image generations to generate up to 5 images per version.&#x22;,
        &#x22;deprecated&#x22;: false
      }
    ]
  },
  {
    &#x22;name&#x22;: &#x22;mcpServerIds&#x22;,
    &#x22;type&#x22;: &#x22;string[]&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;MCP server IDs to enable. When omitted, uses default enabled servers.&#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 or assets to include with the 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 of the attachment.&#x22;,
          &#x22;deprecated&#x22;: false
        }
      ]
    }
  },
  {
    &#x22;name&#x22;: &#x22;skillIds&#x22;,
    &#x22;type&#x22;: &#x22;string[]&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;Skill IDs (from skills.sh) to attach. Skills provide domain-specific knowledge to the AI. Maximum 3.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;action&#x22;,
    &#x22;type&#x22;: &#x22;object&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;An optional action. Use `fix-with-v0` to trigger automatic error fixing — the message should contain the error context.&#x22;,
    &#x22;deprecated&#x22;: false,
    &#x22;properties&#x22;: [
      {
        &#x22;name&#x22;: &#x22;type&#x22;,
        &#x22;type&#x22;: &#x22;'fix-with-v0'&#x22;,
        &#x22;required&#x22;: true,
        &#x22;description&#x22;: &#x22;&#x22;,
        &#x22;deprecated&#x22;: false
      }
    ]
  }
]"
/>

### Response [#response]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;messageId&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;ID of the assistant message that will receive the response. Poll GET /chats/:chatId/messages/:messageId and check `finishReason` for completion.&#x22;,
    &#x22;deprecated&#x22;: false
  }
]"
/>
