Emails
Everything bind.co knows about a user starts with their mailbox: the mail they receive and the mail they send. bind.co turns it into records: the profile, contacts and roles, drafts and operations. This guide covers what an email is in the API, what your application can and cannot get from it, and how emails connect to every other record.
Records, not raw mail
bind.co does not hand out message bodies or subjects. Your application reads the records built from the mail, within the scopes the user consented to. An email appears in the API as a reference: an id, who sent it and when, plus a link that opens it in the user's own mailbox.
An email as evidence
Every operation lists the emails and files it was built from in evidence:
{
"evidence_type": "email",
"role": "primary",
"created_at": "2026-10-14T16:04:30Z",
"file": null,
"email": {"email_id": "eml_16nJ9iKYhhC", "email_sender": "receipts@delta.com", "email_timestamp": "2026-10-14T16:01:47Z"}
}
email_id: the email's id.email_sender: the address it came from.email_timestamp: when it was sent.role: how it relates to the operation:primary,supportingorrelated.
The subject is left out on purpose, as it can carry sensitive free text. An email with an invoice attached appears once as email evidence; the invoice appears as file evidence of its own. See Files.
Opening the original
GET /v1/emails/{email_id}/web-link turns an email_id into a link to the message in the user's
mailbox:
{
"email_id": "eml_16nJ9iKYhhC",
"email_message_id": "18c2f4a9b7d3e1f0",
"email_thread_id": "18c2f1d07a6b9e42",
"email_web_url": "https://mail.google.com/mail/u/0/#all/18c2f4a9b7d3e1f0"
}
email_web_urlopens the message in Gmail or Outlook on the web. Use it for a "view original" button; the user must be signed in to that mailbox in their browser.email_message_idandemail_thread_idare the mail provider's own ids for the message and its conversation (Gmail's message and thread ids, or Microsoft's message and conversation ids). Use them if your application also talks to the provider directly.
Edge cases:
- An email that is not the signed-in user's answers
404, as if it did not exist. email_web_urlcan be null for messages bind.co collected before it kept those links. Fall back to showing the sender and date.- The route needs
profile:read(profile:writeincludes it), not the scope of the operation the email came from.
How emails connect to everything else
| Record | What the mail gives it |
|---|---|
| Profile | The user's title, profession, biography and company profile. |
| Contacts and roles | Each person the user exchanges mail with, and the dates of their first and latest email. |
| Drafts and goals | Each draft follows up on the latest conversation with that contact; newer email with them replaces a draft nobody handled yet. |
| Operations | An operation can start from an email alone, from a file, or both; later emails about the same event attach to it, and duplicates bind.co finds afterwards are merged (merged, undone with unmerge). |
When a draft is sent, it goes out from the user's own mailbox and lands in their Sent folder. The
draft keeps the provider's ids of the sent message and its
conversation in draft_email_message_id and draft_email_thread_id.
New mail reaches bind.co through the email sync; see Mailbox sync.