Messaging

Send a message

Sends a message into a chat: text, attachments, or both. This call keeps nothing and logs nothing. Once sent it is a message in the account's inbox, so reading that conversation back through Curviate stores its body in your tenant's inbox records, with no expiry. COMPANY_ chat ids send as the page.

post/v1/{account_id}/chats/{chat_id}/messages

Request

  • Base URL: https://api.curviate.com
  • URL: https://api.curviate.com/v1/{account_id}/chats/{chat_id}/messages
  • Auth: HTTP bearer

Path parameters

account_idstring required

The account ID (acc_...) that owns the chat.

chat_idstring required

The chat to send to. A COMPANY_ chat id (from the inboxes endpoints) sends as that company page instead of the connected member.

Request body

textstring

Message text (1-8000 chars). Optional when at least one attachment is supplied.

quote_idstring

Optional message ID to quote or reply to.

Response

Message sent. Returns the new message_id and sent_as, the acting identity. Reply as a company page simply by sending into one of its chat ids (from GET /v1/{account_id}/inboxes/{inbox_id}/chats): a COMPANY_ chat id (e.g. COMPANY_83734124_2-...) sends AS THE PAGE and echoes sent_as:{kind:'company',company_id,name} (company_id is null when the page could not be correlated to a managed page). Any other chat id sends as the connected member and echoes sent_as:{kind:'personal'}. Never infer the acting identity from the message's sender field, only from sent_as.

object'message_sent' required

Response type discriminator.

Example response

{
  "safety_warning": {
    "row": "profile_views",
    "reset_at": "2026-09-05T00:00:00.000Z",
    "hint": {
      "parameter": "profile_views.ceiling",
      "message": "This account is at its ceiling for profile_views. This action went through because profile_views.posture is warn, and it counted: 101 of 100 this window. Raise profile_views.ceiling, or wait for the window to reset at 2026-09-05T00:00:00.000Z."
    },
    "reason": "ceiling",
    "blocked": false
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.