Mailbox
Read, search, send, reply, forward, file and delete emails in the user’s own inbox — and the full email thread with any contact.
These calls work on the mailbox the key’s user connected in Meetzy (Gmail, Outlook / Microsoft 365 or IMAP) — the real inbox, not copies. Without one they answer 409 (mailbox_not_connected). Emails you send carry your signature and are logged on the contact’s timeline when the recipient is in the CRM. For tracked one-to-one or bulk emails from templates, see Email campaigns.
/mailbox/foldersList foldersGET/mailbox/emailsList or search emailsGET/mailbox/emails/{id}Read an emailPOST/mailbox/emailsSend an emailPOST/mailbox/draftsCreate a draftPOST/mailbox/emails/{id}/replyReply to an emailPOST/mailbox/emails/{id}/forwardForward an emailPOST/mailbox/emails/{id}/moveMove an emailPATCH/mailbox/emails/{id}Mark read or unreadDELETE/mailbox/emails/{id}Delete an emailGET/mailbox/attachmentsUploaded attachmentsPOST/mailbox/attachments/upload-ticketGet an upload URL for a filePOST/mailbox/attachments/from-urlAttach a file from a URLGET/contacts/{id}/mailEmail threads with a contactPOST/contacts/{id}/mail/draftDraft an email with AIPOST/contacts/{id}/mailWrite to a contact from the mailboxPOST/mail/hiddenHide or show a threadGET/mail/attachmentDownload an attachmentGET/mail/address-bookAddress bookGET/mail/suggestionsAddress suggestions/mailbox/foldersList folders
Folders and labels of the mailbox (Inbox, Sent, Archive, custom labels…) with their ids for move.
Answer: { folders: [...] } — the provider’s folders as it describes them (id, name, role such as inbox / sent, counts).
curl "https://meetzy.me/api/v1/mailbox/folders" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mailbox/folders", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mailbox/folders",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json()See the notes on the left.
/mailbox/emailsList or search emails
Newest first. With q, a real search: mode=content (default) looks in subjects and bodies, mode=people in senders and recipients. Page with cursor.
Query parameters
qstring- Search text (switches to search).
modestringcontent(default) orpeople— withq.rolestringinbox,sentorspam.folderstring- A folder id.
fromstring- Sender address.
tostring- Recipient address.
afterdatetime- Received after.
beforedatetime- Received before.
limitinteger- Default 20.
cursorstring- Next page (from the previous answer).
curl "https://meetzy.me/api/v1/mailbox/emails?q=order%20form&after=2026-09-01" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails?q=order%20form&after=2026-09-01", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mailbox/emails?q=order%20form&after=2026-09-01",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"items": [
{
"id": "em_7Hq…",
"provider_id": "<CAF…@mail.gmail.com>",
"thread_id": "th_19a…",
"subject": "Re: Order form October",
"from": "camille@payfit.com",
"from_name": "Camille Laurent",
"to": [
"olivia@acme.com"
],
"cc": [],
"date": "2026-10-06T16:22:00Z",
"role": "inbox",
"read": true,
"read_date": "2026-10-06T16:30:00Z",
"folders": [
"INBOX"
],
"has_attachments": true,
"snippet": "Here is the signed order form…"
}
],
"cursor": "eyJwYWdlIjoyfQ"
}/mailbox/emails/{id}Read an email
The full email: headers, HTML and plain bodies, and its attachments (download them with GET /mail/attachment).
Path parameters
idstringrequired- Id of the record (UUID).
curl "https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"id": "em_7Hq…",
"thread_id": "th_19a…",
"subject": "Re: Order form October",
"from": "camille@payfit.com",
"to": [
"olivia@acme.com"
],
"cc": [],
"date": "2026-10-06T16:22:00Z",
"role": "inbox",
"folders": [
"INBOX"
],
"body_html": "<p>Here is the signed order form…</p>",
"body_plain": "Here is the signed order form…",
"attachments": [
{
"id": "att_1",
"name": "order-form-signed.pdf",
"mime": "application/pdf",
"size": 184220
}
]
}/mailbox/emailsSend an email
Sends from the user’s mailbox with their signature. Addresses: an array of emails (["a@x.com"]). Attachments: [{ "id": "…" }] (uploaded with the endpoints below), [{ "alias": "…" }], or small files inline [{ "filename": "deck.pdf", "content": "<base64>", "encoding": "base64", "contentType": "application/pdf" }].
Body
tostring[]required- Recipients.
subjectstringrequired- Subject.
bodystringrequired- Body, HTML or plain text.
ccstring[]- Copy.
bccstring[]- Blind copy.
attachmentsobject[]- Attachments.
in_reply_tostring- Provider message id of the email you answer (threading).
trackingboolean- Provider open / click tracking. Default false.
curl -X POST "https://meetzy.me/api/v1/mailbox/emails" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": [ "camille@payfit.com" ], "subject": "Your order form", "body": "<p>Hi Camille,</p><p>Please find your October order form attached.</p>", "attachments": [ { "id": "f3a1c2d4" } ] }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "to": [ "camille@payfit.com" ], "subject": "Your order form", "body": "<p>Hi Camille,</p><p>Please find your October order form attached.</p>", "attachments": [ { "id": "f3a1c2d4" } ] }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/emails",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"to": ["camille@payfit.com"],
"subject": "Your order form",
"body": "<p>Hi Camille,</p><p>Please find your October order form attached.</p>",
"attachments": [
{
"id": "f3a1c2d4"
}
]
},
)
data = res.json(){
"sent": true,
"signature_appended": true,
"provider_response": {
"tracking_id": "trk_8Kd…"
}
}/mailbox/draftsCreate a draft
Saves a draft in the mailbox (with the signature) for someone to review and send. Attachments: [{ "id": "…" }] (uploaded with the endpoints below), [{ "alias": "…" }], or small files inline [{ "filename": "deck.pdf", "content": "<base64>", "encoding": "base64", "contentType": "application/pdf" }].
Body
subjectstringrequired- Subject.
bodystringrequired- Body.
tostring[]- Recipients.
ccstring[]- Copy.
bccstring[]- Blind copy.
attachmentsobject[]- Attachments.
in_reply_tostring- Message id it answers.
curl -X POST "https://meetzy.me/api/v1/mailbox/drafts" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": [ "camille@payfit.com" ], "subject": "Proposal", "body": "Draft for review…" }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/drafts", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "to": [ "camille@payfit.com" ], "subject": "Proposal", "body": "Draft for review…" }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/drafts",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"to": ["camille@payfit.com"],
"subject": "Proposal",
"body": "Draft for review…"
},
)
data = res.json(){
"drafted": true,
"signature_appended": true,
"provider_response": {
"id": "dr_2Lm…"
}
}/mailbox/emails/{id}/replyReply to an email
Replies in the thread (to the sender, or everyone with reply_all), with the signature. as_draft saves it instead of sending. Attachments: [{ "id": "…" }] (uploaded with the endpoints below), [{ "alias": "…" }], or small files inline [{ "filename": "deck.pdf", "content": "<base64>", "encoding": "base64", "contentType": "application/pdf" }].
Path parameters
idstringrequired- Id of the record (UUID).
Body
bodystringrequired- Reply.
reply_allboolean- Reply to all.
tostring[]- Override recipients.
ccstring[]- Copy.
bccstring[]- Blind copy.
attachmentsobject[]- Attachments.
as_draftboolean- Save as a draft.
curl -X POST "https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/reply" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "body": "Thanks Camille — received, I’ll confirm the delivery date tomorrow." }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/reply", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "body": "Thanks Camille — received, I’ll confirm the delivery date tomorrow." }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/reply",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"body": "Thanks Camille — received, I’ll confirm the delivery date tomorrow."
},
)
data = res.json(){
"ok": true,
"action": "sent",
"signature_appended": true,
"provider_response": {}
}/mailbox/emails/{id}/forwardForward an email
Forwards with a message on top; the original attachments follow unless include_original_attachments: false.
Path parameters
idstringrequired- Id of the record (UUID).
Body
tostring[]required- Recipients.
bodystring- Message on top.
ccstring[]- Copy.
bccstring[]- Blind copy.
include_original_attachmentsboolean- Default true.
attachmentsobject[]- Extra attachments.
as_draftboolean- Save as a draft.
curl -X POST "https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/forward" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": [ "logistics@acme.com" ], "body": "Can you plan this delivery?" }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/forward", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "to": [ "logistics@acme.com" ], "body": "Can you plan this delivery?" }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/forward",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"to": ["logistics@acme.com"],
"body": "Can you plan this delivery?"
},
)
data = res.json(){
"ok": true,
"action": "sent",
"signature_appended": true,
"forwarded_attachments": 1,
"provider_response": {}
}/mailbox/emails/{id}/moveMove an email
Moves it to one or more folders / labels (ids from GET /mailbox/folders).
Path parameters
idstringrequired- Id of the record (UUID).
Body
foldersstring[]required- Target folders (or
folderfor one).
curl -X POST "https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/move" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "folders": [ "Label_12" ] }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/move", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "folders": [ "Label_12" ] }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc/move",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"folders": ["Label_12"]
},
)
data = res.json(){
"ok": true
}/mailbox/emails/{id}Mark read or unread
Path parameters
idstringrequired- Id of the record (UUID).
Body
unreadbooleanrequiredtruemarks it unread,falseread.
curl -X PATCH "https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "unread": false }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc", { method: "PATCH", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "unread": false }), }); const data = await res.json();
import os, requests
res = requests.patch(
"https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"unread": False
},
)
data = res.json(){
"ok": true
}/mailbox/emails/{id}Delete an email
Moves it to the trash of the mailbox.
Path parameters
idstringrequired- Id of the record (UUID).
curl -X DELETE "https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc", { method: "DELETE", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` }, }); const data = await res.json();
import os, requests
res = requests.delete(
"https://meetzy.me/api/v1/mailbox/emails/e43414d6-f56f-42be-a64c-a836d6015efc",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"ok": true
}/mailbox/attachmentsUploaded attachments
Files you uploaded for sending, with their id and alias.
curl "https://meetzy.me/api/v1/mailbox/attachments" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mailbox/attachments", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mailbox/attachments",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"items": [
{
"id": "f3a1c2d4",
"filename": "order-form.pdf",
"alias": "order-form",
"size": 184220,
"contentType": "application/pdf",
"created_at": "2026-10-07T09:00:00Z"
}
]
}/mailbox/attachments/upload-ticketGet an upload URL for a file
A one-time URL valid 10 minutes to upload large or binary files, then attach them by id: curl -X POST "<upload_url>" -H "X-Upload-Token: <token>" -F "file=@deck.pdf" returns { "uploaded": [{ "id", "filename", "alias" }] }.
curl -X POST "https://meetzy.me/api/v1/mailbox/attachments/upload-ticket" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mailbox/attachments/upload-ticket", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` }, }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/attachments/upload-ticket",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"upload_url": "https://meetzy.me/api/mcp/upload-attachment",
"token": "up_…",
"expires_in_seconds": 600,
"header": "X-Upload-Token",
"curl_example": "curl -s -X POST \"https://meetzy.me/api/mcp/upload-attachment\" -H \"X-Upload-Token: up_…\" -F \"file=@/path/to/file\""
}/mailbox/attachments/from-urlAttach a file from a URL
Downloads a public file and stores it as an attachment you can send by id.
Body
urlstringrequired- File URL.
filenamestring- File name.
contentTypestring- MIME type.
aliasstring- A name to refer to it.
curl -X POST "https://meetzy.me/api/v1/mailbox/attachments/from-url" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://acme.com/files/catalogue-2026.pdf", "alias": "catalogue" }'
const res = await fetch("https://meetzy.me/api/v1/mailbox/attachments/from-url", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "url": "https://acme.com/files/catalogue-2026.pdf", "alias": "catalogue" }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/mailbox/attachments/from-url",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"url": "https://acme.com/files/catalogue-2026.pdf",
"alias": "catalogue"
},
)
data = res.json(){
"id": "f3a1c2d4",
"filename": "catalogue-2026.pdf",
"contentType": "application/pdf"
}/contacts/{id}/mailEmail threads with a contact
Every email exchanged with the contact (all their addresses) in the user’s mailbox, grouped in threads, newest first: subject, participants, unread, attachments, whether you wrote last, and the messages. When nothing can be read, reason says why (no_email, not_connected, disconnected).
Path parameters
idstringrequired- Id of the record (UUID).
Query parameters
cursorstring- Next page.
show_hiddenstring1includes threads you hid.hidden_onlystring1only hidden threads.
curl "https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"mailbox": {
"email": "olivia@acme.com"
},
"threads": [
{
"id": "th_19a…",
"subject": "Order form October",
"last_date": "2026-10-06T16:22:00Z",
"count": 3,
"unread": false,
"has_attachments": true,
"participants": [
{
"email": "camille@payfit.com",
"name": "Camille Laurent"
},
{
"email": "olivia@acme.com",
"name": "Olivia Martin"
}
],
"last_from_me": false,
"snippet": "Here is the signed order form…",
"hidden": false,
"messages": []
}
],
"hidden_count": 0,
"cursor": null
}/contacts/{id}/mail/draftDraft an email with AI
Writes a 1:1 email to the contact from a brief — new email, reply or forward — the way a good salesperson writes: a greeting line, short paragraphs, one clear next step and a closing line. No name is written at the end (the signature is added when you send). Nothing is sent.
Path parameters
idstringrequired- Id of the record (UUID).
Body
briefstringrequired- What the email should say.
modestringnew(default),reply,replyAllorforward.conversationobject[]- The thread so far, oldest first:
{ from, sent, text }(sent= written by you). languagestringfroren. Default: the conversation’s, else the brief’s.subjectstring- The thread’s subject (replies).
curl -X POST "https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail/draft" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "brief": "Thank her for the order, confirm delivery next Tuesday, ask if she needs testers", "mode": "new" }'
const res = await fetch("https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail/draft", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "brief": "Thank her for the order, confirm delivery next Tuesday, ask if she needs testers", "mode": "new" }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail/draft",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"brief": "Thank her for the order, confirm delivery next Tuesday, ask if she needs testers",
"mode": "new"
},
)
data = res.json(){
"subject": "Your order and next Tuesday’s delivery",
"text": "Hello Camille,\n\nThank you for your order…\n\nBest regards,",
"html": "<div>Hello Camille,</div><div><br></div>…",
"language": "en"
}/contacts/{id}/mailWrite to a contact from the mailbox
A new email, a reply (reply_to_id) or a forward, from the user’s mailbox, with their signature, logged on the contact’s timeline. Attachments inline in base64 (up to 10).
Path parameters
idstringrequired- Id of the record (UUID).
Body
tostring[]required- Recipients (emails, or
{ email }objects). subjectstring- Subject.
htmlstringrequired- Message (HTML or plain text).
ccstring[]- Copy.
bccstring[]- Blind copy.
reply_to_idstring- Provider id of the email answered.
forwardboolean- It is a forward.
quote_htmlstring- Original message quoted under the reply.
attachmentsobject[][{ filename, content (base64), contentType }].signatureboolean- Append the signature. Default true.
curl -X POST "https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail" \ -H "Authorization: Bearer $MEETZY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": [ "camille@payfit.com" ], "subject": "Following up", "html": "Hi Camille,\n\nAny news on the order form?" }'
const res = await fetch("https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail", { method: "POST", headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "to": [ "camille@payfit.com" ], "subject": "Following up", "html": "Hi Camille,\n\nAny news on the order form?" }), }); const data = await res.json();
import os, requests
res = requests.post(
"https://meetzy.me/api/v1/contacts/e43414d6-f56f-42be-a64c-a836d6015efc/mail",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
json={
"to": ["camille@payfit.com"],
"subject": "Following up",
"html": "Hi Camille,\n\nAny news on the order form?"
},
)
data = res.json(){
"sent": true,
"from": "olivia@acme.com",
"id": "em_9Pz…"
}/mail/attachmentDownload an attachment
Streams the file (binary, with its content type).
Query parameters
email_idstringrequired- Email id.
attachment_idstringrequired- Attachment id.
namestring- File name to download as.
Answers the file itself, not JSON.
curl "https://meetzy.me/api/v1/mail/attachment?email_id=em_7Hq…&attachment_id=att_1&name=order-form.pdf" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mail/attachment?email_id=em_7Hq…&attachment_id=att_1&name=order-form.pdf", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mail/attachment?email_id=em_7Hq…&attachment_id=att_1&name=order-form.pdf",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json()See the notes on the left.
/mail/address-bookAddress book
Every address a “To” field can suggest, in one call — people you email (most first, n = emails sent to them lately), your team and the CRM’s contacts — to filter locally as someone types.
curl "https://meetzy.me/api/v1/mail/address-book" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mail/address-book", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mail/address-book",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"people": [
{
"email": "camille@payfit.com",
"name": "Camille Laurent",
"source": "mailbox",
"n": 12
},
{
"email": "marc@globex.com",
"name": "Marc Dupuis",
"source": "crm",
"company": "Globex"
}
],
"at": "2026-10-08T09:00:00.000Z"
}/mail/suggestionsAddress suggestions
People you email most and CRM contacts matching a text — for a “To” field.
Query parameters
qstring- Start of a name or address.
curl "https://meetzy.me/api/v1/mail/suggestions?q=cam" \ -H "Authorization: Bearer $MEETZY_API_KEY"
const res = await fetch("https://meetzy.me/api/v1/mail/suggestions?q=cam", {
headers: { Authorization: `Bearer ${process.env.MEETZY_API_KEY}` },
});
const data = await res.json();import os, requests
res = requests.get(
"https://meetzy.me/api/v1/mail/suggestions?q=cam",
headers={"Authorization": f"Bearer {os.environ['MEETZY_API_KEY']}"},
)
data = res.json(){
"suggestions": [
{
"email": "camille@payfit.com",
"name": "Camille Laurent",
"source": "crm"
}
]
}