Replies

Open as markdown

For AI agents: the docs index is at /llms.txt, and every page is also served as markdown at its URL plus .md.

Replies from prospects. An opt out is caught by a fixed rule before any model runs. A reply that asks for a meeting can be booked from here.

Base URL: YOUR_API_BASE_URL. Every request and response is JSON. Errors use one envelope.

OperationWhat it does
POST /v1/repliesRecord a reply. Opt-outs are suppressed by a fixed rule before any AI runs.
POST /v1/replies/{id}/meetingBook a meeting for a reply through the booking calendar. 503 until configured.

POST/v1/replies#

Record a reply. Opt-outs are suppressed by a fixed rule before any AI runs.

A fixed rule looks for opt-out wording first. If it matches, the intent is opt_out, the address is suppressed, and no model runs.

Authentication: send your API key as a bearer token. See Authentication.

Request body#

Send a JSON object.

FieldTypeRequiredNotes
campaign_idstringYesId of a campaign, such as cmp_2LmQx7RtVw3ZbN1pEs9fKd.
emailstringYesAn email address. It is trimmed and lowercased.
subjectstringYesUp to 300 characters.
bodystringYesUp to 20000 characters.

Example body:

JSON
{
  "campaign_id": "cmp_2LmQx7RtVw3ZbN1pEs9fKd",
  "email": "jordan@northwind.example",
  "subject": "Re: Outbound without the busywork",
  "body": "Sounds useful. Can we talk Thursday?"
}

Response#

Status 201 Created.

JSON
{
  "reply_id": "rpl_Vw3ZbN1pEs9fKd2LmQx7Rt",
  "intent": "interested",
  "classified_by": "ai",
  "suppressed": false
}
  • intent is one of interested, not_interested, out_of_office, opt_out, question or other, or null when classification is unavailable.
  • classified_by is rule, ai or unavailable. When it is unavailable, a classification_note explains why and the reply is still stored.

Errors#

  • unauthorized, HTTP 401: The API key is missing, malformed, revoked or unknown.
  • invalid_input, HTTP 400: A body that is empty, is not JSON or fails validation also answers this, and the message names the field.
  • payload_too_large, HTTP 413: The body is over 256 KiB.
  • unknown_product, HTTP 404: No such campaign on this account.
  • rate_limited, HTTP 429: Too many requests for this key. Wait the number of seconds in Retry-After.

Example request#

Shell
curl -X POST YOUR_API_BASE_URL/v1/replies \
  -H "Authorization: Bearer $COLDMEETINGS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "campaign_id": "cmp_2LmQx7RtVw3ZbN1pEs9fKd",
  "email": "jordan@northwind.example",
  "subject": "Re: Outbound without the busywork",
  "body": "Sounds useful. Can we talk Thursday?"
}'

POST/v1/replies/{id}/meeting#

Book a meeting for a reply through the booking calendar. 503 until configured.

Books a meeting with the person who sent the reply. The attendee email is taken from the reply.

Authentication: send your API key as a bearer token. See Authentication.

Path parameters#

NameTypeNotes
idstringId of the reply.

Request body#

Send a JSON object.

FieldTypeRequiredNotes
attendee_namestringYesUp to 120 characters.
starts_atstringYesFormat: date-time.
timezonestringYesAt least 3 characters. Up to 64 characters.

Example body:

JSON
{
  "attendee_name": "Jordan Lee",
  "starts_at": "2026-10-22T15:00:00Z",
  "timezone": "America/New_York"
}

Response#

Status 201 Created.

JSON
{
  "booking_id": "bk_5Qw8Lm2Zx"
}

Errors#

  • unauthorized, HTTP 401: The API key is missing, malformed, revoked or unknown.
  • invalid_input, HTTP 400: The address is on the do-not-contact list, a meeting is already booked for this reply, or the body is invalid. A body that is empty, is not JSON or fails validation also answers this, and the message names the field.
  • payload_too_large, HTTP 413: The body is over 256 KiB.
  • unknown_product, HTTP 404: No such reply on this account.
  • provider_unavailable, HTTP 503: The booking calendar could not be reached.
  • rate_limited, HTTP 429: Too many requests for this key. Wait the number of seconds in Retry-After.

Example request#

Shell
curl -X POST YOUR_API_BASE_URL/v1/replies/rpl_Vw3ZbN1pEs9fKd2LmQx7Rt/meeting \
  -H "Authorization: Bearer $COLDMEETINGS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "attendee_name": "Jordan Lee",
  "starts_at": "2026-10-22T15:00:00Z",
  "timezone": "America/New_York"
}'
Documentation menu