Op deze pagina
We hebben zelf ook een hekel aan breaking changes, maar om de API’s handiger te maken en toekomstige functionaliteit en integraties makkelijker mogelijk te maken, krijgt ieder bericht overal hetzelfde ID: in de antwoorden van de API bij het verzenden, in Get Message, in webhooks, in de MCP en in het dashboard.
Controleer of deze wijzigingen gevolgen hebben voor je integratie. Deze wijzigingen zijn ingegaan op 9 november 2026.
1. Het id in de API-antwoorden bij het verzenden
Het id van iedere ontvanger in het antwoord van Create Message, Create Template Message en Create Conversation Message is nu een kale UUID. Eerder was het de volledige Message-ID-header, met punthaken en een domein.
Vóór 9 november:
{
"object": "message",
"id": "<[email protected]>",
"recipient": { "email": "[email protected]" },
"status": "queued"
}
Vanaf 9 november:
{
"object": "message",
"id": "0192f5a4-7b1c-7d3e-9a2b-4c5d6e7f8a9b",
"message_id_header": "<[email protected]>",
"recipient": { "email": "[email protected]" },
"status": "queued"
}
De Message-ID-header verhuist naar een nieuw veld, message_id_header, in hetzelfde antwoord.
Wat je mogelijk moet aanpassen
- Koppel je een verzending aan de bijbehorende webhook-events door het
iduit het antwoord te vergelijken metdata.message_id_headeruit de webhook? Vergelijk dan voortaan metmessage_id_header. - Filter je List Messages op
message_id_headermet hetiduit een verzendantwoord? Gebruik dan voortaanmessage_id_header.
Wat blijft werken
- Get Message en Cancel Message accepteren zowel het nieuwe kale
idals de oude vorm<...@domein>. ID’s die je al hebt opgeslagen blijven werken. - De Message-ID-header van je e-mails verandert niet.
- Herhaal je een verzoek met dezelfde
Idempotency-Key, dan krijg je het opgeslagen antwoord van het eerste verzoek. Tot 24 uur na 9 november kan een herhaling van een eerder verzoek nog de oude vorm teruggeven, zondermessage_id_header. - Oudere versies van onze SDK’s blijven werken:
idis nog steeds een string. Nieuwe SDK-versies voegenmessage_id_headertoe.
2. Het bericht-ID in webhooks en het dashboard
Bericht-webhooks (message.reception, message.delivered, message.transient_error, message.failed, message.bounced, message.suppressed, message.opened en message.clicked) bevatten het API-ID van het bericht als data.id: hetzelfde id dat je bij het verzenden terugkreeg en dat Get Message accepteert. Vóór 9 november was data.id een intern ID, een andere UUID zonder koppeltekens.
Vóór 9 november:
"data": {
"id": "407926766d2711f09b30960002cafe7c",
"message_id_header": "<[email protected]>"
}
Vanaf 9 november:
"data": {
"id": "0192f5a4-7b1c-7d3e-9a2b-4c5d6e7f8a9b",
"message_id_header": "<[email protected]>"
}
Wat je mogelijk moet aanpassen
- Groepeer je de webhook-events van een bericht op
data.id? Houd er dan rekening mee dat een bericht dat vóór 9 november is verzonden events met beide ID’s kan krijgen: bijvoorbeeld eenmessage.delivered-event met het oude ID en een latermessage.opened-event met het nieuwe. Dit kan tot 30 dagen voorkomen.data.message_id_headerverandert niet, dus daarop kun je over de overgang heen groeperen. - Controleer je de vorm van
data.id? Die bevat nu koppeltekens en is 36 tekens lang in plaats van 32. - Archiveer je berichten naar je eigen S3-bucket? Nieuwe archieven gebruiken het API-ID in hun map- en bestandsnamen. Archieven van vóór 9 november houden hun paden.
- Campagneberichten sturen dezelfde
message.*-events. Hundata.idheeft nu ook koppeltekens en is 36 tekens lang. Het is hetzelfde voor elk event van een campagnebericht, dus je kunt er de events van dat bericht mee groeperen. Get Message geeft geen losse campagneberichten terug: het werkt alleen voor transactionele berichten. - Inkomende route-webhooks (
message.routing) bevatten nu ook het bericht-ID alsdata.id. Het is hetzelfde ID als in hetmessage.reception-event van dat bericht. - Verstuur je via SMTP, of via API v1 met je eigen Message-ID? Dan heeft elk bericht een eigen
id, ook als één e-mail naar meerdere ontvangers gaat. Get Message en Cancel Message vinden het niet via de Message-ID, en ook niet via de UUID daarin. Zoek je een bericht op zijn Message-ID? Gebruik dan List Messages metmessage_id_header. - Berichten die eerst één
iddeelden, meestal SMTP-mail naar meerdere ontvangers, hebben nu elk een eigenid. Het eerste bericht van elke groep houdt het gedeeldeid. List Messages toont de nieuwe ID’s.
Wat blijft werken
- Het dashboard toont het API-ID als het “Message ID” van het bericht. Dashboardlinks die je al hebt gedeeld blijven werken.
- Get Message en Cancel Message accepteren ook het AhaSend-ID, dus een ID dat je uit een oudere webhook hebt opgeslagen vindt zijn bericht nog steeds.
Heb je vragen? Mail naar [email protected] of kom langs op onze Discord-server.