Skip to main content
POST
Rate a draft

Authorizations

X-API-Key
string
header
required

Path Parameters

draft_id
string<uuid>
required

Body

application/json

A thumb, not a scale: good or bad is all the loop needs.

rating
enum<string>
required

The human verdict on a drafted reply.

Two values, not five stars: a triaging human will click a thumb, not deliberate over a scale, and "good or bad" is all a feedback loop needs.

Available options:
good,
bad

Response

Successful Response

body_text
string
required
confidence
enum<string> | null
required

How sure the model is. Shown on the card; no band sends without a person.

Available options:
high,
medium,
low
confidence_reason
string | null
required
generated_body_text
string
required
id
string<uuid>
required
source
enum<string>
required
Available options:
auto_drafted,
on_demand
status
enum<string>
required

Where this reply stands. pending_approval: waiting for a person to approve, edit or discard it. scheduled: the agent will send it on its own at send_after unless a person discards or edits it first. sending: it is leaving now and can no longer be changed. send_unknown: it was sent, but the mailbox has not confirmed it yet; it settles on its own as sent or send_failed. send_failed: it did not go; write a fresh reply. sent: it went out. discarded: a person rejected it or asked for a new version. stale: the contact wrote again before anyone answered it.

Available options:
pending_approval,
sent,
discarded,
stale,
scheduled,
sending,
send_unknown,
send_failed
steer_text
string | null
required
subject
string | null
required
thread_id
string<uuid>
required
ask_reason
enum<string> | null

Why this reply is waiting for a person instead of going out on its own, for example low_confidence, always_ask, unverified_sender, different_sender or daily_cap. Null when nothing held it back, and on a reply a person asked for.

Available options:
low_confidence,
findings,
insufficient_data,
policy,
always_ask,
sequence_manual,
step_requires_approval,
daily_cap,
unverified_sender,
suppressed,
different_sender,
label,
question,
consecutive_cap,
thread_cap,
hourly_cap,
org_daily_cap,
stale_inbound,
sequence_gone,
bot_question,
automated_counterparty,
kill_switch,
authentication,
language,
linkedin_only,
send_interrupted,
sender_switched_to_manual
confidence_score
integer | null

The model's 0-100 calibration, clamped into the categorical band. Null for drafts that predate the field. Presentation only: every decision reads the categorical confidence.

outbound_message_id
string<uuid> | null

The agent's message this reply came from, when a sequence's agent wrote it. Edits, ratings and the send are recorded against that message too, which is how the agent learns from them. Null on a reply written in the default voice for a conversation outside any sequence.

rating
enum<string> | null

The human verdict on this draft, when one was given.

Available options:
good,
bad
send_after
string<date-time> | null

When a scheduled reply goes out on its own, unless a person discards or edits it first. Kept once the reply is sending or sent. Null on a reply that was never scheduled, and on one taken off the schedule, by a person editing it or by a check that held it back for a person (see ask_reason).

sent_by_kind
enum<string> | null

Who sent the reply: person when someone approved it, system when the agent sent it on its own. Null until it is sent.

Available options:
person,
system