Send a new message to an existing chat to continue the conversation
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer macaly_... |
Content-Type | Yes | application/json |
| Parameter | Type | Description |
|---|---|---|
chatId | string | The chat ID |
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
content | string | Conditional | - | The user’s message. Required unless resume is true |
stream | boolean | No | true | If false, returns JSON instead of stream |
agentMode | "auto" | "fast" | "smart" | No | "auto" | Controls the AI agent’s speed/quality tradeoff |
executionMode | "auto" | "planning" | "build" | No | "auto" | Controls how the AI approaches the task |
model | "sonnet-4-5" | "sonnet-4-6" | "opus-4-5" | "opus-4-6" | No | - | AI model to use. Defaults to team’s configured model |
reasoningEffort | "medium" | "high" | No | - | Controls how deeply the AI reasons about the task |
resume | boolean | No | false | If true, resumes a stopped conversation without adding new content |
experimental_attachments | array | No | [] | File attachments (see Create Chat for format) |
resume is true, you cannot include content or experimental_attachments. This is used to continue a conversation that was previously stopped.stream: false)stream: true, default)| Status | Description |
|---|---|
| 200 | Success - Message sent |
| 400 | Invalid request body |
| 401 | Invalid or missing API key |
| 402 | Insufficient credits |
| 403 | Chat does not belong to this team |
| 404 | Chat not found |
| 429 | Rate limited |
| 500 | Server error |
| 503 | Service unavailable - The AI workspace is busy, try again shortly |
stream: falseGET /api/chat/{chatId}/status until completed