Cerclen API
Conversations

Post a message

An answer, a question, a reference or an internal note, in Markdown, with links. Marked "via API" for everyone who sees it. 403 `cannot_post`; 400 `empty_message`.

POST
/api/v1/deals/{deal_id}/requests/{request_id}/messages

An answer, a question, a reference or an internal note, in Markdown, with links. Marked "via API" for everyone who sees it. 403 cannot_post; 400 empty_message.

Authorization

ApiKey
headerAuthorizationBearer <token>

An API key from your organization's API Keys page in Cerclen.

Path Parameters

request_id*Request Id
Formatuuid
deal_id*Deal Id
Formatuuid

Request Body

application/json
  1. body
internal?Internal

Keep it to your side, such as a draft for a colleague to check; an internal_note is kept to your side anyway. Only the side that runs the list keeps anything to itself: everything the other side posts is shared.

Defaultfalse
kind?MessageKind

Drives triage and the UI, never the status machine (ADR-0003).

Default"response"
Value in"response""question""reference""internal_note"
links?array<>
Itemsitems <= 20
partial?Partial

Answers the request in part; it moves to partial.

Defaultfalse
text?Text

In Markdown.

Lengthlength <= 20000
Default""
update_status?Update Status

A response moves the request to partial or complete; false leaves it.

Defaulttrue

Response Body

Successful Response

application/json
  1. response

An answer, a question, a reference or a note in a request's conversation.

author*|null
files*array<>
format*BodyFormat

markdown, or plain for an emailed reply.

Value in"text""markdown"
id*Id
internal*Internal

Seen by its author's side only.

kind*MessageKind

Drives triage and the UI, never the status machine (ADR-0003).

Value in"response""question""reference""internal_note"
on_behalf*On Behalf

Confirmed by a colleague for the person who emailed it.

partial*Partial

A partial answer: more is to come.

posted_at*|null
source*MessageSource

Where it came from: web, email, import or api.

Value in"email""web""import""api"
text*Text
curl -X POST 'https://app.cerclen.com/api/v1/deals/497f6eca-6276-4993-bfeb-53cbbbba6f08/requests/497f6eca-6276-4993-bfeb-53cbbbba6f08/messages' \  -H "Authorization: Bearer $CERCLEN_KEY" \  -H 'Content-Type: application/json' \  -d '{  "links": [    {      "label": "FY2025 audit",      "url": "https://dataroom.example.com/f/123"    }  ],  "text": "The FY2025 audited accounts are in the data room."}'
{  "author": {    "email": "string",    "id": "string",    "name": "string"  },  "files": [    {      "content_type": "string",      "downloadable": true,      "kind": "file",      "name": "string",      "size": 0,      "url": "string",      "version_id": "string"    }  ],  "format": "text",  "id": "string",  "internal": true,  "kind": "response",  "on_behalf": true,  "partial": true,  "posted_at": "2019-08-24T14:15:22Z",  "source": "email",  "text": "string"}