---
title: "Send a message"
method: POST
path: "/v1/messages"
tags: ["Messages"]
---

# Send a message

`POST /v1/messages`

## Request

- Base URL: `https://api.automatedclientacquisition.com`
- URL: `https://api.automatedclientacquisition.com/v1/messages`
- Auth: HTTP bearer

Sends a reply into an existing conversation. Channel, sender account and
recipient are derived from the conversation, so a reply always goes back out
of the same inbox the thread lives in.

To *start* a conversation rather than continue one, enroll the contact in a
sequence — that is what owns first contact, sending windows and per-mailbox
limits.

## Request body

- object
  - `conversation_id` string, uuid, required: Conversation to reply to.
  - `content` string: Message body. When `content_type` is `html`, this is raw HTML — e.g. an `<a href="..."><img src="..."></a>` snippet to embed a linked thumbnail image (a Loom video preview, for instance).
  - `content_type` 'text' | 'html': Defaults to `text`. Set to `html` to send `content` as raw HTML — only meaningful on email conversations; other channels send it as literal, unrendered text.
  - `email_subject` string: Email only. Defaults to the thread subject.
  - `email_cc` string[]: Email only.
  - `email_bcc` string[]: Email only.
  - `attachments` object[]: Files to attach.
    - `type` string
    - `url` string
    - `filename` string

## Response `200`

Message queued for delivery.

- object
  - `success` boolean
  - `message_id` string, uuid

## Other responses

- `400`: Malformed or invalid body. Do not retry — it will fail identically.
- `401`: Missing, invalid or revoked token.
- `500`: Something broke on our side. Safe to retry with backoff.

---

[API](https://skmtc.dev/automatedclientacquisition/apis/aca-api.md) · [All operations](https://skmtc.dev/automatedclientacquisition/apis/aca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/automatedclientacquisition/apis/aca-api/revisions/8f3e3b141311?raw)
