---
title: "Send message"
method: POST
path: "/ai/messages"
tags: ["Conversations"]
---

# Send message

`POST /ai/messages`

## Request

- Base URL: `https://api.darwin.so/api/v1`
- URL: `https://api.darwin.so/api/v1/ai/messages`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

When aiId is omitted, Darwin infers the intended accessible AI from natural language and current context.

## Request body

- CreateAIMessageRequest
  - `aiId` string
  - `content` string, required
  - `requestId` string

## Response `201`

The completed or clarified AI turn.

- ConversationTurn
  - `conversation` ConversationSummary, required
    - `id` string, required
    - `aiId` string, nullable, required
    - `mode` 'CHAT', required
    - `type` 'CHAT', required
    - `title` string, required
    - `messageCount` integer, required
    - `lastMessageAt` string, date-time, nullable
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `messages` ConversationMessage[], required
    - `id` string, required
    - `conversationId` string, required
    - `role` 'user' | 'assistant', required
    - `content` string, required
    - `sequence` integer, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400`: The request was invalid.
- `401`: The API key or access token is missing, invalid, expired, or revoked.
- `403`: The principal does not have the required scope or resource access.
- `404`: The resource was not found for this principal.

---

[API](https://skmtc.dev/darwin/apis/darwin-api.md) · [All operations](https://skmtc.dev/darwin/apis/darwin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/darwin/apis/darwin-api/revisions/56166fce7bfb?raw)
