Reply to a conversation

Send a reply to the customer, in the same thread in their mail app, exactly as the inbox's Reply does: from the inbox's name at your verified sending…

POSThttps://app.usenotix.dev/api/v1/inbound/conversations/{id}/reply

Needs a full access key. Sending access keys cannot call this. Key permissions lists the extra rules some calls have.

Send a reply to the customer, in the same thread in their mail app, exactly as the inbox's Reply does: from the inbox's name at your verified sending domain, with replies coming back to the inbox. The conversation becomes PENDING (or CLOSED with close: true) and, if nobody had it, is assigned to the key's creator. This sends a real email.

The send follows every rule of POST /v1/emails: a verified, unpaused domain, suppressions, your sending limits and the key's own send caps. A key limited to one domain replies only in its domain's inboxes, from that domain; if that domain is not verified the answer is 400, and if its sending is paused, 403. A key whose approval policy only saves drafts (or allows no one without approval) answers 403. A reply cannot be previewed with Notix-Dry-Run. Pass Idempotency-Key to make a retry safe: a retry answered from it sends nothing and spends none of the reply limit, the sending budget or the key's caps. A conversation the key cannot see (404) or one in Spam (400) is refused before anything is spent. Attachments are not taken here; reply from the inbox to attach files. A team can send 30 replies a minute.

Who can call it

A full access key only. Every other key answers 403 SCOPE_DENIED (send-only, read-only and live AI keys).

Whose inbox

The key acts as the person who created it, as they are on the team today: a team admin sees every inbox, a member only the inboxes they belong to. Read marks are that person's, and notes, assignments and replies carry their name. A key whose creator left the team, or made before Notix recorded who made each key, answers 403 FORBIDDEN. A key limited to one domain sees only the inboxes that receive mail on that domain. The thread does not say a change came through the API: it carries the creator's name, and the key's audit log (GET /v1/audit-log) records which key made it.

The team can make 120 inbox reads a minute through the API; when Notix cannot count them the answer is 503 SERVICE_UNAVAILABLE (try again shortly), never a 429.

Path parameters

idstringrequired

Body parameters

textstringrequired

The reply as plain text, at most 20,000 characters.

At most 20,000 characters.

htmlstring

An HTML version of the reply, at most 100,000 characters.

At most 100,000 characters.

closeboolean

true closes the conversation once the reply is sent; otherwise it becomes PENDING.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Idempotency-Keystring

Errors

400

The body is not valid, the conversation is in Spam, or there is no verified domain to reply from: the team has none, or, for a key limited to one domain, that domain is not verified.

403

`SCOPE_DENIED`: the key is not a full access key (send-only, read-only or live AI). `FORBIDDEN`: the key's creator has left the team, or the key is older than Notix's record of who made each key. `FORBIDDEN` also when the key's approval policy allows no send without a person (DRAFT_ONLY, or a threshold of 0), or when the domain's sending is paused.

404

No conversation with this id that the key's creator can see (or, for a pinned key, on its domain).

409

The same Idempotency-Key with a different body, or one still in progress.

429

The team sent 30 inbox replies in the last minute, or a sending limit or key cap is reached. A retry answered from its Idempotency-Key spends none of them.

503

The inbox's rate counters, or the sending counters, cannot be read just now; nothing was done. Try again shortly.

Every error has the same shape. See all error codes.

curl -X POST "https://app.usenotix.dev/api/v1/inbound/conversations/<id>/reply" \
  -H "Authorization: Bearer $NOTIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "text": "Thanks Ada, your refund is on its way.",
  "close": false
}'
Response200
{
  "emailId": "cm1x8f3k20001qz7v5b9d2e4a",
  "status": "PENDING"
}
Open in ClaudeOpen in ChatGPT