API reference / Email
Send an email
Sends one email that a person wrote, now, from a mailbox of the business to one address or to up to 10 addresses. It can carry up to 5 files, 10 MB together. It is not part of a campaign: it has the signature of the mailbox and no footer. Troopy refuses an address on do-not-contact, a mailbox that is not active, and a mailbox without enough of its limit left for 24 hours. Each address counts as one email in that limit. The answer is the kept email: sent, failed with the reason, or unknown when it possibly went. Troopy does not send an unknown email again. Owners and admins also send from a teammate's own address: a t- box, with the signature and the daily cap of that address. That needs agents:read and agents:write too. Teammates cannot call this operation.
/api/v1/emailsOther ways to call it
troopy emails sendIdempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.Body
application/jsonfrom*stringWhere it goes from: an m- id of a mailbox, or the t- id of a teammate's own address (owners and admins)
to*string | array<string>One email address, or a list of up to 10 addresses
subjectstringNeeded, except for an answer: an answer takes the subject of its email
At most 300 characters
body*stringAt least 1 characters · At most 20000 characters
replyTostringThe email that it answers: a c- or d- id, or a t- id from the same teammate's address
attachmentsarray<object>Up to 5 files, 10 MB together. Troopy sends them and keeps only their names and sizes
At most 5 items
3 properties
name*stringThe name of the file, like proposal.pdf
At least 1 characters · At most 200 characters
typestringIts media type, like application/pdf
At most 100 characters
content*stringThe file, base64-encoded
At least 1 characters · At most 13400000 characters · base64
Response
201 · application/jsondata*object20 properties
id*stringThe id of an email. c- is an email of a campaign or a reply to it. d- is an email that a person wrote, or an answer to it. t- is the mail of a teammate
kind*enum<string>campaignreplydirectteammate
status*enum<string>failed: an email of a person that did not go. unknown: one that possibly went, so Troopy does not send it again
receivedsentscheduleddraftfailedunknown
box*object | nullThe mailbox, or the address of the teammate, that it came to or went from. Null for a draft with no mailbox yet
2 properties
id*stringThe id of a box. m- is a mailbox of the business. t- is the own address of a teammate
address*stringparty*objectWho it is from, for a received email. Who it is to, for the rest
2 properties
name*string | nullemail*stringsubject*stringpreview*stringThe start of its words, at most 160 characters
at*stringWhen it came or went. For a scheduled email or a draft, when it is due
campaign*object | null2 properties
id*stringA 24-character id
name*stringteammate*object | null2 properties
handle*stringname*stringspam*booleanread*booleanFalse for a received email that no person opened. True for every other email
labels*array<string>The labels that people put on it
sort*enum<string> | nullFor a reply: what it says. Null until someone sorts it, and for every other email
interestedquestionnot_nownot_interestedout_of_officeunsubscribewrong_person
bodystringOnly for one email: its words. The mail of a teammate has every code and link masked
maskedobjectOnly for one email of a teammate: how many codes and links are masked in its words
2 properties
codes*integerlinks*integererrorstringOnly for one email of a person: what the mail server or a delivery report said, when not every address got the email
recipientsarray<string>Only for an email of a person to more than one address: every address that it went to
attachmentsarray<object>The files that went with an email of a person: their names and sizes. Troopy does not keep the files
3 properties
name*stringtype*stringsize*integerIn bytes
threadarray<object>Only for one email: every email between the business and this address, the oldest first, with its words
19 properties
id*stringThe id of an email. c- is an email of a campaign or a reply to it. d- is an email that a person wrote, or an answer to it. t- is the mail of a teammate
kind*enum<string>campaignreplydirectteammate
status*enum<string>failed: an email of a person that did not go. unknown: one that possibly went, so Troopy does not send it again
receivedsentscheduleddraftfailedunknown
box*object | nullThe mailbox, or the address of the teammate, that it came to or went from. Null for a draft with no mailbox yet
2 properties
id*stringThe id of a box. m- is a mailbox of the business. t- is the own address of a teammate
address*stringparty*objectWho it is from, for a received email. Who it is to, for the rest
2 properties
name*string | nullemail*stringsubject*stringpreview*stringThe start of its words, at most 160 characters
at*stringWhen it came or went. For a scheduled email or a draft, when it is due
campaign*object | null2 properties
id*stringA 24-character id
name*stringteammate*object | null2 properties
handle*stringname*stringspam*booleanread*booleanFalse for a received email that no person opened. True for every other email
labels*array<string>The labels that people put on it
sort*enum<string> | nullFor a reply: what it says. Null until someone sorts it, and for every other email
interestedquestionnot_nownot_interestedout_of_officeunsubscribewrong_person
bodystringOnly for one email: its words. The mail of a teammate has every code and link masked
maskedobjectOnly for one email of a teammate: how many codes and links are masked in its words
2 properties
codes*integerlinks*integererrorstringOnly for one email of a person: what the mail server or a delivery report said, when not every address got the email
recipientsarray<string>Only for an email of a person to more than one address: every address that it went to
attachmentsarray<object>The files that went with an email of a person: their names and sizes. Troopy does not keep the files
3 properties
name*stringtype*stringsize*integerIn bytes