Reply in a thread
Replies within a thread. The sender, recipients, subject, and the In-Reply-To and References headers are inferred from the conversation, so only the content is required — set reply_all or the individual fields to override what is inferred. Suppression, pacing, and idempotency behave exactly as on a send. So does the plan: 402 plan_required without one, 402 allowance_reached once its emails are used up.
/threads/{thread_id}/replyAuthorizationBearer token (API key) · headerrequiredPass an AI Inbx API key as a Bearer token.
thread_idstringrequiredThe prefixed thread ID.
Idempotency-KeystringMakes a send safe to retry. Reuse only for the same request body.
AIInbx-WorkspacestringWorkspace id from GET /workspaces, for an OAuth token that reaches several.
application/jsonfromstring | objectThe sender, you@yourdomain.com or Name <you@yourdomain.com>. Defaults to the thread's own; from a connection made an inbox, to its inbox on the thread — the one mail on the thread last went through, on a tie the one the thread is filed under. With several and none of them on the thread, it has to be named.
Show propertiesHide properties
stringnamestringaddressstring<email>requiredtostring<email> | string<email>[]Recipients in place of the ones the thread implies: one address or a list, at most 100.
Show propertiesHide properties
string<email>string<email>string<email>reply_allbooleanAnswer everyone on the thread's latest message, not only its sender.
subjectstringThe subject, in place of Re: and the thread's.
ccstring<email> | string<email>[]Cc recipients: one address or a list, at most 100.
Show propertiesHide properties
string<email>string<email>string<email>bccstring<email> | string<email>[]Bcc recipients, hidden from the others: one address or a list, at most 100.
Show propertiesHide properties
string<email>string<email>string<email>reply_tostring<email> | string<email>[]Where replies go (Reply-To), when not to the sender: one address or a list, at most 100.
Show propertiesHide properties
string<email>string<email>string<email>attachmentsobject[]Files to attach, at most 20: filename, content_type and content in base64, and a cid to make one an inline image.
Show propertiesHide properties
objectfilenamestringrequiredcontent_typestringrequiredcontentstringrequiredcidstringheadersobjectExtra headers to write on the message. Message-ID, In-Reply-To and References are the API's to write and are refused.
suppression_keystringThe suppression list the send is checked against, besides the workspace-wide * list.
pacingobjectThe send's say over pacing: skip: true goes past every rule, count: false uses up none of their limits.
Show propertiesHide properties
skipbooleancountbooleantrackingobjectOverrides the sending domain's tracking settings for this email. Only mail sent from a domain is tracked: true on a send from a connected mailbox is refused with tracking_unavailable.
Show propertiesHide properties
opensbooleanWhether opens are tracked on this email. Omit to follow the domain's tracking.opens.
clicksbooleanWhether links are rewritten to track clicks on this email. Omit to follow the domain's tracking.clicks.
scheduled_atstring<date-time>When to send, as an ISO 8601 time, at most 30 days out. On a draft, the time proposed for it.
draftbooleanKeep it as a draft for a person to review: nothing is sent until it is sent with POST /emails/{id}/send or from the console, at draft.review_url. A draft uses none of the plan's emails until then.
htmlstringThe HTML body.
textstringThe plain-text body.
unsubscribebooleanMarks the email non-essential: it carries one-click unsubscribe headers, and optional suppressions apply to it. One recipient only.
An idempotent request replayed the existing reply.
idstringrequiredthread_idstringrequiredspace_idstring | nullrequiredWhich space a resource is in. Null is the workspace itself — what every resource of a workspace that has no spaces says.
Show propertiesHide properties
stringnulldirectionstringrequiredinboundoutboundstatusstringrequireddraftscheduledcanceleddiscardedqueuedsendingsentdeliveredbouncedcomplainedfailedreceivedfromobjectrequiredShow propertiesHide properties
namestring | nullShow propertiesHide properties
stringnulladdressstring<email>requiredtostring<email>[]requiredccstring<email>[]bccstring<email>[]reply_tostring<email>[]subjectstringrequiredsnippetstringrequiredhtmlstring | nullShow propertiesHide properties
stringnulltextstring | nullShow propertiesHide properties
stringnullcategorystring | nullrequiredShow propertiesHide properties
stringnullverdictsobject | nullrequiredShow propertiesHide properties
spamstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnullspfstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnulldkimstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnulldmarcstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnullnullsuppression_keystring | nullrequiredShow propertiesHide properties
stringnullmessage_idstringrequiredThe RFC Message-ID, without angle brackets.
in_reply_tostring | nullrequiredThe Message-ID of the message this one answers, without angle brackets. Null when it answers none.
Show propertiesHide properties
stringnullidempotency_keystring | nullrequiredShow propertiesHide properties
stringnullcreated_atstring<date-time>requiredWhen it took its place in its thread. A draft's moves to when it is sent — draft.drafted_at keeps when it was written.
scheduled_atstring<date-time> | nullrequiredShow propertiesHide properties
string<date-time>nullsent_atstring<date-time> | nullrequiredShow propertiesHide properties
string<date-time>nulldraftobject | nullrequiredShow propertiesHide properties
drafted_atstring<date-time>requirededited_atstring<date-time> | nullrequiredWhen its content last changed before it was sent. Null when it went as written.
Show propertiesHide properties
string<date-time>nullreview_urlstring<uri> | nullrequiredWhere a person reviews, edits and sends it in the console.
Show propertiesHide properties
string<uri>nullnullattachmentsobject[]Show propertiesHide properties
objectidstringrequiredfilenamestringrequiredcontent_typestringrequiredsizeintegerrequiredcidstring | nullrequiredShow propertiesHide properties
stringnulldownload_urlstring<uri> | nullrequiredSigned URL for the original bytes, good until expires_at. Opens without the API key, so treat it as a secret — and do not send the key to it: storage answers a request that carries an Authorization header with 400. To keep a reference, store the attachment id and call GET /attachments/{id}. Null when the bytes are gone.
Show propertiesHide properties
string<uri>nullexpires_atstring<date-time> | nullrequiredWhen download_url and preparation.content_url stop working — an hour after the response. Read the email again, or call the download endpoint with the attachment ID, for fresh ones.
Show propertiesHide properties
string<date-time>nullpreparationobject | nullrequiredShow propertiesHide properties
statusstringrequiredreadypartialunsupportedfailedformatstring | nullrequiredShow propertiesHide properties
stringnullpagesinteger | nullrequiredShow propertiesHide properties
integernullwarningsstring[]requiredcontent_urlstring<uri> | nullrequiredSigned URL for the prepared text, good until the attachment's expires_at. Opens without the API key — and only without it: storage answers a request that carries an Authorization header with 400. Null when there is no prepared text.
Show propertiesHide properties
string<uri>nulltextstring | nullShow propertiesHide properties
stringnullnullsuppressedstring<email>[]requiredpacingobject | nullrequiredShow propertiesHide properties
held_byobjectrequiredShow propertiesHide properties
kindstringrequiredkindstringrequiredrule_idstringrequiredkindstringrequiredrule_idstringrequiredestimated_send_atstring<date-time> | nullrequiredShow propertiesHide properties
string<date-time>nullnullThe reply was accepted.
idstringrequiredthread_idstringrequiredspace_idstring | nullrequiredWhich space a resource is in. Null is the workspace itself — what every resource of a workspace that has no spaces says.
Show propertiesHide properties
stringnulldirectionstringrequiredinboundoutboundstatusstringrequireddraftscheduledcanceleddiscardedqueuedsendingsentdeliveredbouncedcomplainedfailedreceivedfromobjectrequiredShow propertiesHide properties
namestring | nullShow propertiesHide properties
stringnulladdressstring<email>requiredtostring<email>[]requiredccstring<email>[]bccstring<email>[]reply_tostring<email>[]subjectstringrequiredsnippetstringrequiredhtmlstring | nullShow propertiesHide properties
stringnulltextstring | nullShow propertiesHide properties
stringnullcategorystring | nullrequiredShow propertiesHide properties
stringnullverdictsobject | nullrequiredShow propertiesHide properties
spamstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnullspfstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnulldkimstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnulldmarcstring | nullrequiredPASS, FAIL, GRAY or PROCESSING_FAILED. Null when this check was not reported.
Show propertiesHide properties
stringnullnullsuppression_keystring | nullrequiredShow propertiesHide properties
stringnullmessage_idstringrequiredThe RFC Message-ID, without angle brackets.
in_reply_tostring | nullrequiredThe Message-ID of the message this one answers, without angle brackets. Null when it answers none.
Show propertiesHide properties
stringnullidempotency_keystring | nullrequiredShow propertiesHide properties
stringnullcreated_atstring<date-time>requiredWhen it took its place in its thread. A draft's moves to when it is sent — draft.drafted_at keeps when it was written.
scheduled_atstring<date-time> | nullrequiredShow propertiesHide properties
string<date-time>nullsent_atstring<date-time> | nullrequiredShow propertiesHide properties
string<date-time>nulldraftobject | nullrequiredShow propertiesHide properties
drafted_atstring<date-time>requirededited_atstring<date-time> | nullrequiredWhen its content last changed before it was sent. Null when it went as written.
Show propertiesHide properties
string<date-time>nullreview_urlstring<uri> | nullrequiredWhere a person reviews, edits and sends it in the console.
Show propertiesHide properties
string<uri>nullnullattachmentsobject[]Show propertiesHide properties
objectidstringrequiredfilenamestringrequiredcontent_typestringrequiredsizeintegerrequiredcidstring | nullrequiredShow propertiesHide properties
stringnulldownload_urlstring<uri> | nullrequiredSigned URL for the original bytes, good until expires_at. Opens without the API key, so treat it as a secret — and do not send the key to it: storage answers a request that carries an Authorization header with 400. To keep a reference, store the attachment id and call GET /attachments/{id}. Null when the bytes are gone.
Show propertiesHide properties
string<uri>nullexpires_atstring<date-time> | nullrequiredWhen download_url and preparation.content_url stop working — an hour after the response. Read the email again, or call the download endpoint with the attachment ID, for fresh ones.
Show propertiesHide properties
string<date-time>nullpreparationobject | nullrequiredShow propertiesHide properties
statusstringrequiredreadypartialunsupportedfailedformatstring | nullrequiredShow propertiesHide properties
stringnullpagesinteger | nullrequiredShow propertiesHide properties
integernullwarningsstring[]requiredcontent_urlstring<uri> | nullrequiredSigned URL for the prepared text, good until the attachment's expires_at. Opens without the API key — and only without it: storage answers a request that carries an Authorization header with 400. Null when there is no prepared text.
Show propertiesHide properties
string<uri>nulltextstring | nullShow propertiesHide properties
stringnullnullsuppressedstring<email>[]requiredpacingobject | nullrequiredShow propertiesHide properties
held_byobjectrequiredShow propertiesHide properties
kindstringrequiredkindstringrequiredrule_idstringrequiredkindstringrequiredrule_idstringrequiredestimated_send_atstring<date-time> | nullrequiredShow propertiesHide properties
string<date-time>nullnullThe request is invalid.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe API key is missing or invalid.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe workspace has no plan (plan_required), or its plan's allowance is used up (allowance_reached).
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe API key or token does not have the required scope, or the token is connected as an inbox and the operation is not one an inbox may use.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe requested resource does not exist.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe request conflicts with the resource's current state.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe request body or attachments are too large.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe request body is not JSON.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe request body failed validation.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe organisation's request budget is spent (too_many_requests), or an upstream mail provider is throttling (rate_limited).
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredAn internal error occurred.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredAn upstream mail provider failed.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequiredThe service is temporarily unavailable.
typestringrequiredtitlestringrequiredstatusintegerrequireddetailstringrequiredcodestringrequiredrequest_idstringrequiredissuesobject[]Show propertiesHide properties
objectpathstringrequiredmessagestringrequired