Inbox
Integrieren Sie den Talkturo-Posteingang mit Kontaktverwaltung, E-Mail-Threads, Anrufen, Postfächern und Nylas-Webhooks in Ihre Anwendung.
curl "https://app.talkturo.com/api/inbox/list?accountSlug=acme-sales&status=open&page=0" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"total": 1,
"page": 0,
"pageSize": 50,
"contacts": [
{
"id": "cnt_a1b2c3d4",
"name": "Mara Weber",
"email": "mara.weber@beispiel.de",
"phone": "+49 30 55501234",
"company": "Nordstern GmbH",
"lastAt": "2025-02-14T09:30:00.000Z",
"last": {
"kind": "email",
"channel": "email",
"direction": "inbound",
"ref": "msg_e5f6g7h8",
"preview": "Vielen Dank für die Informationen.",
"seconds": null,
"assistant": "Sales Assistant"
},
"channels": ["email"],
"assistants": [
{
"id": "ast_12345678",
"name": "Sales Assistant"
}
],
"unread": 1,
"needsYou": true,
"done": false,
"assignee": null
}
]
}
curl "https://app.talkturo.com/api/inbox/contacts?q=Mara&accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"contacts": [
{
"id": "cnt_a1b2c3d4",
"name": "Mara Weber",
"email": "mara.weber@beispiel.de",
"company": "Nordstern GmbH"
}
]
}
curl "https://app.talkturo.com/api/inbox/contacts/cnt_a1b2c3d4/timeline?accountSlug=acme-sales&channel=email" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"contact": {
"id": "cnt_a1b2c3d4",
"name": "Mara Weber",
"firstName": "Mara",
"lastName": "Weber",
"email": "mara.weber@beispiel.de",
"phone": "+49 30 55501234",
"phoneSecondary": null,
"company": "Nordstern GmbH",
"jobTitle": "Einkaufsleiterin",
"leadStatus": "qualified",
"source": "website",
"createdAt": "2025-01-10T08:00:00.000Z",
"lastAt": "2025-02-14T09:30:00.000Z",
"lastChannel": "email",
"lastAssistant": "Sales Assistant",
"channelsUsed": ["email"],
"done": false,
"assignee": null,
"groups": []
},
"items": [
{
"kind": "email",
"id": "msg_e5f6g7h8",
"at": "2025-02-14T09:30:00.000Z",
"channel": "email",
"direction": "inbound",
"assistantId": "ast_12345678",
"assistantName": "Sales Assistant",
"threadId": "thr_i9j0k1l2",
"threadUnread": true,
"sentBy": null,
"fromName": "Mara Weber",
"fromAddress": "mara.weber@beispiel.de",
"to": [{ "email": "sales@acme.ai", "name": "Sales Assistant" }],
"subject": "Nächste Schritte",
"text": "Vielen Dank für die Informationen.",
"deliveryStatus": "delivered",
"deliveryDetail": null,
"attachments": []
}
],
"mailboxes": [
{
"assistantId": "ast_12345678",
"assistantName": "Sales Assistant",
"address": "sales@acme.ai"
}
]
}
curl "https://app.talkturo.com/api/inbox/contact-state?accountSlug=acme-sales" \
-X POST \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{
"contactIds": ["cnt_a1b2c3d4"],
"action": "assign",
"assigneeId": "usr_m3n4o5p6"
}'
{
"updated": 1
}
curl "https://app.talkturo.com/api/inbox/access?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"canManage": true,
"me": "usr_m3n4o5p6",
"assistants": [
{
"id": "ast_12345678",
"name": "Sales Assistant"
}
],
"members": [
{
"id": "usr_m3n4o5p6",
"name": "Lena Fischer",
"email": "lena.fischer@acme.ai",
"pictureUrl": null,
"role": "member",
"manager": false,
"assistantIds": null
}
]
}
curl "https://app.talkturo.com/api/inbox/access?accountSlug=acme-sales" \
-X PUT \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{
"userId": "usr_m3n4o5p6",
"assistantIds": ["ast_12345678"]
}'
{
"ok": true,
"assistantIds": ["ast_12345678"]
}
curl "https://app.talkturo.com/api/inbox/members?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"me": "usr_m3n4o5p6",
"members": [
{
"id": "usr_m3n4o5p6",
"name": "Lena Fischer",
"email": "lena.fischer@acme.ai",
"pictureUrl": null,
"role": "member"
}
]
}
curl "https://app.talkturo.com/api/inbox/availability?localPart=sales&accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"ok": true,
"address": "sales@acme.ai"
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/calls?accountSlug=acme-sales&page=1&dir=inbound" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"calls": [
{
"id": "call_q7r8s9t0",
"direction": "inbound",
"isWeb": false,
"isTest": false,
"status": "completed",
"startedAt": "2025-02-14T09:00:00.000Z",
"endedAt": "2025-02-14T09:05:12.000Z",
"createdAt": "2025-02-14T09:00:00.000Z",
"durationSeconds": 312,
"counterpartNumber": "+49 30 55501234",
"ourNumber": "+49 30 55501000",
"assistantName": "Sales Assistant",
"contact": {
"id": "cnt_a1b2c3d4",
"name": "Mara Weber",
"company": "Nordstern GmbH"
},
"summary": "Interesse an einer Produktdemo"
}
],
"hasMore": false
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/calls/call_q7r8s9t0?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"call": {
"id": "call_q7r8s9t0",
"direction": "inbound",
"isWeb": false,
"isTest": false,
"status": "completed",
"startedAt": "2025-02-14T09:00:00.000Z",
"endedAt": "2025-02-14T09:05:12.000Z",
"createdAt": "2025-02-14T09:00:00.000Z",
"durationSeconds": 312,
"counterpartNumber": "+49 30 55501234",
"ourNumber": "+49 30 55501000",
"assistantName": "Sales Assistant",
"contact": {
"id": "cnt_a1b2c3d4",
"name": "Mara Weber",
"company": "Nordstern GmbH"
},
"summary": "Interesse an einer Produktdemo",
"hasRecording": true,
"messages": [
{
"role": "assistant",
"message": "Wie kann ich Ihnen helfen?",
"time": 2
}
]
}
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/calls/summary?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"totals": {
"calls": 42,
"inbound": 25,
"outbound": 17,
"avgSeconds": 184
},
"numbers": [
{
"number": "+49 30 55501000",
"kind": "phone",
"calls": 42,
"inbound": 25,
"outbound": 17,
"avgSeconds": 184,
"lastCallAt": "2025-02-14T09:00:00.000Z",
"assigned": true
}
]
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/mailbox?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"emailEnabled": true,
"pricing": {
"perMailboxMonth": 15,
"perThousandEmails": 2
},
"domain": "acme.ai",
"suggestion": "sales",
"mailbox": {
"id": "mb_u1v2w3x4",
"address": "sales@acme.ai",
"senderName": "Sales Assistant",
"createdAt": "2025-02-01T10:00:00.000Z",
"unread": 3,
"signaturePreview": "Viele Grüße",
"defaultSenderName": "Talkturo",
"defaultSignature": "Viele Grüße",
"ownSenderName": null,
"ownSignature": null
}
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/mailbox?accountSlug=acme-sales" \
-X POST \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{ "localPart": "sales" }'
{
"mailbox": {
"id": "mb_u1v2w3x4",
"address": "sales@acme.ai"
}
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/mailbox?accountSlug=acme-sales" \
-X PATCH \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{
"senderName": "Lena vom Vertrieb",
"signature": "Viele Grüße,
Lena"
}'
{
"ok": true
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/mailbox?accountSlug=acme-sales" \
-X DELETE \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"ok": true
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/send?accountSlug=acme-sales" \
-X POST \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-F 'payload={"mode":"new","to":[{"email":"mara.weber@beispiel.de","name":"Mara Weber"}],"cc":[],"bcc":[],"subject":"Ihre Produktdemo","text":"Gerne vereinbaren wir einen Termin.","locale":"de"}'
{
"ok": true,
"id": "msg_e5f6g7h8"
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/threads?accountSlug=acme-sales&folder=inbox" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"threads": [
{
"id": "thr_i9j0k1l2",
"subject": "Nächste Schritte",
"with": "Mara Weber",
"withEmail": "mara.weber@beispiel.de",
"unread": true,
"messageCount": 2,
"hasAttachments": false,
"deliveryProblem": false,
"lastMessageAt": "2025-02-14T09:30:00.000Z",
"lastDirection": "inbound",
"preview": "Vielen Dank für die Informationen."
}
]
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/threads/thr_i9j0k1l2/block?accountSlug=acme-sales" \
-X POST \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{ "domain": true }'
{
"ok": true,
"pattern": "@beispiel.de"
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/threads/thr_i9j0k1l2/block?accountSlug=acme-sales&domain=1" \
-X DELETE \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"ok": true
}
curl "https://app.talkturo.com/api/inbox/assistants/ast_12345678/threads/thr_i9j0k1l2/folder?accountSlug=acme-sales" \
-X POST \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{ "folder": "inbox" }'
{
"ok": true,
"folder": "inbox",
"contactId": "cnt_a1b2c3d4"
}
curl "https://app.talkturo.com/api/inbox/threads/thr_i9j0k1l2?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"thread": {
"id": "thr_i9j0k1l2",
"subject": "Nächste Schritte",
"mailboxAddress": "sales@acme.ai",
"deliveryProblem": false
},
"messages": [
{
"id": "msg_e5f6g7h8",
"direction": "inbound",
"sentBy": null,
"fromName": "Mara Weber",
"fromAddress": "mara.weber@beispiel.de",
"to": [{ "email": "sales@acme.ai" }],
"cc": [],
"replyTo": [],
"subject": "Nächste Schritte",
"text": "Vielen Dank für die Informationen.",
"quotedText": "",
"html": null,
"inline": [],
"deliveryStatus": "delivered",
"deliveryDetail": null,
"sentAt": "2025-02-14T09:30:00.000Z",
"attachments": []
}
]
}
curl "https://app.talkturo.com/api/inbox/threads/thr_i9j0k1l2?accountSlug=acme-sales" \
-X POST \
-H "Authorization: Bearer tk_test_example_9xmk7q2r" \
-H "Content-Type: application/json" \
-d '{ "action": "read" }'
{
"ok": true
}
curl "https://app.talkturo.com/api/inbox/attachments/att_y5z6a7b8?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_test_example_9xmk7q2r"
{
"url": "https://storage.example.net/signed/att_y5z6a7b8?expires=60"
}
curl "https://app.talkturo.com/api/inbox/nylas/webhook?challenge=nylas_challenge_7f3a"
nylas_challenge_7f3a
curl "https://app.talkturo.com/api/inbox/nylas/webhook" \
-X POST \
-H "Content-Type: application/json" \
-H "X-Nylas-Signature: 4d2f8a6e1c9b7a5f3e2d1c0b9a8f7e6d5c4b3a291817161514131211100f0e0d" \
-d '{
"object": "event",
"id": "evt_c1d2e3f4",
"type": "message.created"
}'
{
"ok": true
}
Talkturo Inbox API
Verwalten Sie Kontakte, Anrufe und E-Mail-Threads über einen gemeinsamen Posteingang. Sie können Kontakte suchen, Status ändern, Postfächer verwalten, Nachrichten senden und Nylas-Ereignisse empfangen.
Alle Inbox-Endpunkte verwenden die Basis-URL https://app.talkturo.com. Die Authentifizierung erfolgt ausschließlich über eine authentifizierte Supabase-Browsersitzung oder ein Sitzungs-Bearer-Token. API-Schlüssel werden mit HTTP 403 abgelehnt.
Für Bearer-Sitzungstoken ist accountSlug erforderlich. Cookie-basierte Browser-Anfragen können alternativ teamId verwenden.
Endpunktübersicht
| Methode | Pfad | Zweck | Authentifizierung |
|---|---|---|---|
GET | /api/inbox/list | Kontakte im Posteingang auflisten | Sitzung |
GET | /api/inbox/contacts | Kontakte suchen | Sitzung |
GET | /api/inbox/contacts/{contactId}/timeline | Kontakt-Zeitleiste abrufen | Sitzung |
POST | /api/inbox/contact-state | Kontaktstatus ändern | Sitzung |
GET, PUT | /api/inbox/access | Zugriff auf Assistenten verwalten | Sitzung |
GET | /api/inbox/members | Workspace-Mitglieder auflisten | Sitzung |
GET | /api/inbox/availability | E-Mail-Adresse prüfen | Sitzung |
GET | /api/inbox/assistants/{assistantId}/calls | Anrufe eines Assistenten auflisten | Sitzung |
GET | /api/inbox/assistants/{assistantId}/calls/{callId} | Anrufdetails abrufen | Sitzung |
GET | /api/inbox/assistants/{assistantId}/calls/summary | Anrufstatistik abrufen | Sitzung |
GET, POST, PATCH, DELETE | /api/inbox/assistants/{assistantId}/mailbox | Postfach verwalten | Sitzung |
POST | /api/inbox/assistants/{assistantId}/send | E-Mail senden | Sitzung |
GET | /api/inbox/assistants/{assistantId}/threads | E-Mail-Threads auflisten | Sitzung |
POST, DELETE | /api/inbox/assistants/{assistantId}/threads/{threadId}/block | Absender blockieren oder entsperren | Sitzung |
POST | /api/inbox/assistants/{assistantId}/threads/{threadId}/folder | Thread verschieben | Sitzung |
GET, POST | /api/inbox/threads/{threadId} | Thread-Nachrichten abrufen oder als gelesen markieren | Sitzung |
GET | /api/inbox/attachments/{attachmentId} | Anhang herunterladen | Sitzung |
GET, POST | /api/inbox/nylas/webhook | Nylas-Challenge und Ereignisse verarbeiten | HMAC-SHA256 |
Gemeinsame Authentifizierungsfehler
| Status | Antwort | Bedeutung |
|---|---|---|
401 | Unauthorized | Keine gültige Authentifizierung vorhanden |
401 | Invalid session token | Das Sitzungstoken ist ungültig |
400 | Account slug required | accountSlug fehlt |
400 | teamId or accountSlug query parameter or body field required | Workspace-Auswahl fehlt |
404 | Account not found | Workspace wurde nicht gefunden |
403 | Access denied | Kein Zugriff auf den Workspace |
403 | Not available with an API key | Der Endpunkt akzeptiert keine API-Schlüssel |
Posteingangsliste
Rufen Sie Kontakte mit Filtern für Kanal, Status, Zuweisung, ungelesene Nachrichten und Seitenzahl ab.
Endpunkt
GET /api/inbox/list
Query-Parameter
1, um nur ungelesene Kontakte abzurufen.me, unassigned oder die UUID eines Workspace-Mitglieds.1, um nur Kontakte abzurufen, die Ihre Bearbeitung benötigen.0 und 1000.Antwortfelder
Bei einem Fehler beim Laden des Posteingangs antwortet der Endpunkt mit HTTP 500 und { "error": "Could not load the Inbox" }.
Kontaktsuche
Suchen Sie nach Kontakten mit Namen, E-Mail-Adresse oder Unternehmen. Ergebnisse ohne gültige E-Mail-Adresse werden nicht zurückgegeben.
Endpunkt
GET /api/inbox/contacts
Query-Parameter
Antwortfelder
Suchtexte mit weniger als zwei Zeichen liefern eine leere Ergebnisliste, ohne die Datenbank abzufragen.
Kontakt-Zeitleiste
Rufen Sie die chronologisch sortierte Aktivität eines Kontakts ab. Die Zeitleiste enthält Anrufe und E-Mail-Nachrichten.
Endpunkt
GET /api/inbox/contacts/{contactId}/timeline
Parameter
Antwortfelder
Ohne channel werden Anrufe und E-Mails zurückgegeben. Mit phone, web oder email können Sie die Aktivität einschränken. Mitglieder mit eingeschränktem Assistentenzugriff werden automatisch gefiltert.
Kontakt-Status
Ändern Sie den Status mehrerer Kontakte oder weisen Sie Kontakte einem Workspace-Mitglied zu.
Endpunkt
POST /api/inbox/contact-state
Anfragefelder
assign erforderlich.Antwortfelder
Posteingangs-Zugriff
Lesen und ändern Sie die Assistenten, auf die Workspace-Mitglieder im Posteingang zugreifen dürfen.
Zugriff abrufen
GET /api/inbox/access
Query-Parameter
Antwortfelder
Zugriff aktualisieren
PUT /api/inbox/access
Anfragefelder
assistantIds: null entfernt die Einschränkung. Ein leeres Array speichert dagegen eine ausdrückliche Einschränkung ohne zugängliche Assistenten. UUIDs aus anderen Workspaces werden stillschweigend entfernt.
Workspace-Mitglieder
Listen Sie die Mitglieder des ausgewählten Workspace auf.
Endpunkt
GET /api/inbox/members
Query-Parameter
Antwortfelder
Adressverfügbarkeit
Prüfen Sie, ob ein lokaler Teil einer E-Mail-Adresse verfügbar ist.
Endpunkt
GET /api/inbox/availability
Query-Parameter
Antwortfelder
Assistenten-Anrufe
Listen Sie die Anrufe eines Assistenten mit optionalen Filtern und Seitennummern auf.
Endpunkt
GET /api/inbox/assistants/{assistantId}/calls
Parameter
1. Standardwert ist 1.web für Web-Anrufe oder eine Telefonnummer des Assistenten.Antwortfelder
Anruf-Details
Rufen Sie Metadaten, Zusammenfassung und Transkript eines einzelnen Anrufs ab.
Endpunkt
GET /api/inbox/assistants/{assistantId}/calls/{callId}
Parameter
Antwortfelder
Anruf-Zusammenfassung
Rufen Sie aggregierte Anrufzahlen und Statistiken pro Telefonnummer ab.
Endpunkt
GET /api/inbox/assistants/{assistantId}/calls/summary
Parameter
Antwortfelder
Für Web-Anrufe ist number leer. Zugewiesene Telefonnummern ohne Anrufe werden mit Zählwerten von 0 zurückgegeben.
Postfachverwaltung
Lesen, erstellen, aktualisieren und löschen Sie das E-Mail-Postfach eines Assistenten.
Postfach abrufen
GET /api/inbox/assistants/{assistantId}/mailbox
Postfach erstellen
POST /api/inbox/assistants/{assistantId}/mailbox
Postfach aktualisieren
PATCH /api/inbox/assistants/{assistantId}/mailbox
Postfach löschen
DELETE /api/inbox/assistants/{assistantId}/mailbox
Parameter
Das Löschen eines Postfachs ist nur für Workspace-Eigentümer erlaubt. Eine leere Zeichenfolge bei senderName oder signature setzt die jeweilige Workspace-Voreinstellung zurück.
E-Mail senden
Senden Sie neue E-Mails, Antworten oder Weiterleitungen mit optionalen Anhängen.
Endpunkt
POST /api/inbox/assistants/{assistantId}/send
Parameter
Felder von payload
en.Der Endpunkt erwartet multipart/form-data. Ohne Postfach antwortet er mit 409 und no_mailbox. Zu große oder blockierte Anhänge führen zu 413 beziehungsweise 400.
Assistenten-Threads
Listen Sie die E-Mail-Threads eines Assistenten nach Ordner auf.
Endpunkt
GET /api/inbox/assistants/{assistantId}/threads
Parameter
Antwortfelder
Wenn der Assistent kein E-Mail-Postfach besitzt, gibt der Endpunkt { "threads": [] } zurück.
Absender blockieren oder entsperren
Blockieren Sie den Absender eines Threads oder entfernen Sie eine bestehende Blockierung.
Absender blockieren
POST /api/inbox/assistants/{assistantId}/threads/{threadId}/block
Absender entsperren
DELETE /api/inbox/assistants/{assistantId}/threads/{threadId}/block
Parameter
1, um eine Domainblockierung zu entfernen.true wird die gesamte Absenderdomain blockiert. Andernfalls wird nur die konkrete Adresse blockiert.Antwortfelder
@.Beim Blockieren wird der Thread automatisch in den Spam-Ordner verschoben.
Thread verschieben
Verschieben Sie einen Thread zwischen Posteingang und Spam.
Endpunkt
POST /api/inbox/assistants/{assistantId}/threads/{threadId}/folder
Parameter
Antwortfelder
Beim Verschieben aus Spam in den Posteingang kann der Endpunkt anhand des ersten eingehenden Absenders einen CRM-Kontakt auflösen oder erstellen.
Thread-Nachrichten
Rufen Sie einen Thread mit seinen Nachrichten ab oder markieren Sie eingehende Nachrichten als gelesen.
Nachrichten abrufen
GET /api/inbox/threads/{threadId}
Thread als gelesen markieren
POST /api/inbox/threads/{threadId}
Parameter
read markieren Sie den Thread und ungelesene eingehende Nachrichten als gelesen.readAntwortfelder
Inline-Anhänge werden anhand von cid:-Verweisen in HTML erkannt. Ein Anhang ist nur herunterladbar, wenn er nicht blockiert wurde und einen gespeicherten Pfad besitzt.
Anhang-Download
Erzeugen Sie eine kurzlebige signierte URL für einen gespeicherten Anhang.
Endpunkt
GET /api/inbox/attachments/{attachmentId}
Parameter
Antwortfelder
Der Endpunkt antwortet mit 404, wenn der Anhang ungültig, blockiert, workspacefremd oder nicht gespeichert ist.
Nylas-Webhook
Verarbeiten Sie die Nylas-Challenge und empfangen Sie signierte E-Mail-Ereignisse. Dieser Webhook verwendet keine Sitzungsauthentifizierung und akzeptiert keine API-Schlüssel.
Challenge bestätigen
GET /api/inbox/nylas/webhook
Query-Parameter
Ereignisse empfangen
POST /api/inbox/nylas/webhook
Header und Anfrage
Antwortfelder
Berechnen Sie die Signatur mit dem Secret NYLAS_INBOX_WEBHOOK_SECRET. Fehlende, ungültige oder nicht übereinstimmende Signaturen führen zu 401. Ungültiges JSON führt zu 400; Verarbeitungsfehler führen zu 500, damit Nylas das Ereignis erneut sendet.