API
Changelog
What changed in the API, newest first.
About this page
Every change to the REST API and its webhooks is listed here, newest first: what was added, what changed and what was taken away. A change that could break code you already wrote follows the deprecation policy, which says how much notice it gets.
The SDKs and the command line tool list their own releases. Changes up to 11 October 2026 are listed release by release in the TypeScript SDK changelog.
October 2026
**Added**
- Booking pages.
/booking-pagesmakes, reads, changes and deletes the public pages where somebody books a meeting,GET /booking-pages/{id}/timeslists their open times, andPUT /booking-pages/{id}/backgroundputs a photo behind the card./bookingsreads what was booked and approves, declines or cancels a booking or sends its email again, andGET /bookings/analyticsreports how the pages did. - Tasks.
/tasks,/task-runsand/task-approvalsgive the assistant work it does by itself, on a schedule, when mail arrives or when asked, and let you approve or deny what a run asks to do. - Connectors.
/connectors,/connector-apps,/connector-categoriesand/connector-callsconnect outside apps, run their actions and list what was done through them. - Team inbox.
GET /threads/{id}/team,/threads/{id}/assignee,/threads/{id}/done,/threads/{id}/reopenand/threads/{id}/commentsgive a thread to one person, mark it done for everyone and keep comments the sender never sees. - Messages in a fixed shape.
GET /threads/{id}/messagesandGET /threads/{id}/messages/{messageId}return each message withfrom,to,cc,bcc,replyTo,date,messageId,text,html,attachmentsandheaders. These fields are added to and never renamed or taken away. - Signatures.
/signatureskeeps several named signatures for each address, andPOST /emailstakessignatureIdto pick one. - Segments.
/segmentssaves conditions on contacts under a name, andPOST /segments/previewcounts the contacts a set of conditions matches. - Contacts.
GET /contacts/cards/duplicatesandPOST /contacts/cards/{id}/mergefind and merge the cards of one person,GET /contacts/birthdayslists the birthdays between two dates, a card can be a group, and every contact carries its custom fields inattributes. - Broadcasts.
POST /broadcasts/drafts,PATCH /broadcasts/{id}andPOST /broadcasts/{id}/sendsave, change and send a draft,POST /broadcasts/testsends a test,POST /broadcasts/{id}/duplicatecopies a broadcast, andPOST /broadcasts/{id}/resendsends it again to the people who did not open it. - Marketing.
POST /broadcaststakesexcludeAudienceIds,segmentId,utmandabTest, a broadcast fills{{attributes.<key>}}from each contact,GET /broadcasts/{id}/statsaddslinks,clients,countriesandabTest,POST /audiences/{id}/importtakesattributeson each row, a form field withsaveAssaves its answer to a custom field, and an audience withshowOnPreferencesis listed on the email preferences page the unsubscribe link opens. - Unsubscribes.
/suppressions/unsubscribeslists, records and takes back unsubscribes, which now hold for the whole workspace and outlast deleting a contact. - Automations.
GET /automations/analyticsandGET /automations/{id}/runsreport how automations did and what each one did, and an automation can start when an email arrives and answer it. - Calendar.
GET /calendar/free-busyreads when people are busy,POST /calendar/events/{id}/hideand/unhidetake an event off your calendar and put it back,GET /calendar/eventstakesq, andscopechanges one date of a repeating event or the dates after it. - Your account.
/account/sessions,/account/passkeysand/account/security-eventslist the devices a person is signed in on and sign them out, manage their passkeys and read their security log, andGET /account/connected-apps/{clientId}/requestsreads the calls a connected app made.GET /security/eventsreads the security log of the workspace. - Sent mail.
GET /emailstakessince,until,recipientandtag, andGET /analytics/sendingtakes the same four. - Attachments by address.
POST /emailsandPOST /emails/batchtake a file at an https address as{ url }, fetched once when the message is accepted. Inline files may come to 10 MB together and a message to 25 MB, andattachmentDelivery: autosends anything larger as links. - SMTP. A message handed over with an API key takes
X-OpenEmail-Tags,X-OpenEmail-Scheduled-At,X-OpenEmail-Track-OpensandX-OpenEmail-Track-Clicks, which set thetags,scheduledAtandtrackingof the send. - API keys.
ipAllowlistonPOST /keysandPATCH /keys/{id}holds a key to some IP addresses and ranges, and a call or an SMTP sign-in from anywhere else is refused with 403ip_not_allowed. - Webhook events. The OpenAPI document has a
webhookssection with the data of every event. New events:booking.*,broadcast.*,task.run.*,approval.requested,connector.*,contact.*,sending.paused,sending.resumedandautomation.resumed. - Webhook data. Every
email.*event carries thetagsof its send, andemail.receivedandemail.repliedcarrymessageId,from,fromNameanddate, with the attachments of a received message listed without their bytes. - Webhook secrets. After
POST /webhooks/{id}/rotate-secretthe old secret keeps signing beside the new one for 24 hours, andpreviousSecretExpiresAton the endpoint says until when. - Forms.
allowedSiteslists the sites that may use a form. - Mailbox. A rule condition can ask whether a message
bounced, andGET /threads/countsreturnsunlabelled, the inbox without labelled mail. - Upload storage.
GET /files/statsreturnsuploadStorage, the space the uploads of the whole workspace take beside what its plan allows, and each plan fromGET /billing/planscarriesuploadStorageBytes.
**Changed**
- A broadcast cannot go to the built-in audience of everyone the workspace has written to:
POST /broadcastsandPOST /broadcasts/previewanswer 422audience_is_everyone. - Every broadcast and automation email that does not place
{{unsubscribeUrl}}itself ends with an unsubscribe footer. POST /formsturnssettings.doubleOptInon unless it is sent asfalse.- The export operations need the read scope of everything an export holds, not
threads:readalone. POST /domains/{id}/addresses/{addressId}/app-passwordsand/mail-app-setupare refused with 403insufficient_authorityunless the caller holds every scope the password would carry.GET /calendar/eventslists your own events.includeTeam=trueadds the rest of the workspace, apart from events marked private.- Chats belong to the person who holds them, so an access token reaches the chats of the person who connected it, where it was refused with 403
owner_only. automation.webhookgoes only to the endpoint its step names, andGET /webhooks/eventsno longer lists it.- A 422
invalid_parametermessage names the field and what it takes. Codes andparamare unchanged. - Uploads are held to the storage of the plan instead of 10 GB on every plan: 10 GB on Free, 50 GB on Starter, 250 GB on Business and 1 TB on Enterprise. Past it an upload is a 507
upload_storage_full.
**Removed**
- The
developerModesetting.GET /settingsno longer returns it, andPATCH /settingsignores it, or answers 422not_per_addresswhen it comes withaddress.