Webhooks
/api/v1/event-typesKatalog aller Webhook-Ereignisse mit dem Lese-Scope, den ein Empfänger braucht.
Jeder gültige API-Schlüssel oder OAuth-Token.
Antwort 200
object"list"PflichtdataArray<EventType>PflichttypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.testdescriptionstringPflichtscopestringPflichtBenötigter Lese-Scope
curl 'https://www.debt-flow.io/api/v1/event-types' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"type": "contact.created",
"description": "string",
"scope": "string"
}
]
}/api/v1/eventsAlle Ereignisse des Kontos, neueste zuerst – dieselben Nutzlasten wie bei Webhooks. Geeignet für Polling-Trigger (Zapier, Make, n8n). Ereignisse, für die der Schlüssel keinen Lese-Scope hat, werden ausgelassen. Aufbewahrung: verarbeitete Ereignisse 30 Tage (noch nicht zugestellte länger).
Berechtigung: webhooks:read
Query-Parameter
typeenumWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.testlimitintegerAnzahl Einträge (1–100)1–100 · Standard: 25cursorstring`nextCursor` der vorherigen Seitemax. 500 Zeichen
Antwort 200
object"list"PflichtdataArray<Event>PflichtidstringPflichtobject"event"PflichttypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.testapiVersionstringPflichtcreatedAtstring (date-time)PflichtdataobjectPflichtobjectobjectPflichtRessource im Format der REST-API v1previousobjectGeänderte Felder vorher (nur bei *.updated)
hasMorebooleanPflichtnextCursorstring | nullPflicht
curl 'https://www.debt-flow.io/api/v1/events' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "evt_3kR9xY2mQ7pL0aB4cD1e",
"object": "event",
"type": "contact.created",
"apiVersion": "string",
"createdAt": "2026-11-01T09:30:00.000Z",
"data": {
"object": {},
"previous": {}
}
}
],
"hasMore": false,
"nextCursor": "string"
}/api/v1/events/{id}Berechtigung: webhooks:read
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · Event
idstringPflichtobject"event"PflichttypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.testapiVersionstringPflichtcreatedAtstring (date-time)PflichtdataobjectPflichtobjectobjectPflichtRessource im Format der REST-API v1previousobjectGeänderte Felder vorher (nur bei *.updated)
curl 'https://www.debt-flow.io/api/v1/events/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "evt_3kR9xY2mQ7pL0aB4cD1e",
"object": "event",
"type": "contact.created",
"apiVersion": "string",
"createdAt": "2026-11-01T09:30:00.000Z",
"data": {
"object": {},
"previous": {}
}
}/api/v1/webhook-deliveriesZustellungen der letzten 30 Tage, neueste zuerst; mit Antwortstatus und Versuchen.
Berechtigung: webhooks:read
Query-Parameter
endpointIdstringmax. 128 ZeichenlimitintegerAnzahl Einträge (1–100)1–100 · Standard: 25cursorstring`nextCursor` der vorherigen Seitemax. 500 Zeichen
Antwort 200
object"list"PflichtdataArray<WebhookDelivery>PflichtidstringPflichtobject"webhook_delivery"PflichtendpointIdstringPflichteventIdstringPflichteventTypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.teststatus"pending" | "succeeded" | "failed"PflichttestbooleanPflichtattemptsintegerPflicht-9007199254740991–9007199254740991nextAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991responseBodystring | nullPflichtAnfang der Antwort (max. 200 Zeichen; Werte sensibler Header und Tokens entfernt)errorstring | nullPflichtdurationMsinteger | nullPflicht-9007199254740991–9007199254740991attemptLogArray<object>PflichtLetzte Versucheatstring (date-time)PflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991errorstring | nullPflichtdurationMsintegerPflicht-9007199254740991–9007199254740991
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)
hasMorebooleanPflichtnextCursorstring | nullPflicht
curl 'https://www.debt-flow.io/api/v1/webhook-deliveries' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "string",
"object": "webhook_delivery",
"endpointId": "string",
"eventId": "string",
"eventType": "contact.created",
"status": "pending",
"test": false,
"attempts": 0,
"nextAttemptAt": "2026-11-01T09:30:00.000Z",
"lastAttemptAt": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"responseBody": "string",
"error": "string",
"durationMs": 0,
"attemptLog": [
{
"at": "2026-11-01T09:30:00.000Z",
"responseStatus": null,
"error": "string",
"durationMs": 0
}
],
"createdAt": "2026-11-01T09:30:00.000Z"
}
],
"hasMore": false,
"nextCursor": "string"
}/api/v1/webhook-deliveries/{id}Berechtigung: webhooks:read
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · WebhookDelivery
idstringPflichtobject"webhook_delivery"PflichtendpointIdstringPflichteventIdstringPflichteventTypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.teststatus"pending" | "succeeded" | "failed"PflichttestbooleanPflichtattemptsintegerPflicht-9007199254740991–9007199254740991nextAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991responseBodystring | nullPflichtAnfang der Antwort (max. 200 Zeichen; Werte sensibler Header und Tokens entfernt)errorstring | nullPflichtdurationMsinteger | nullPflicht-9007199254740991–9007199254740991attemptLogArray<object>PflichtLetzte Versucheatstring (date-time)PflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991errorstring | nullPflichtdurationMsintegerPflicht-9007199254740991–9007199254740991
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/webhook-deliveries/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "webhook_delivery",
"endpointId": "string",
"eventId": "string",
"eventType": "contact.created",
"status": "pending",
"test": false,
"attempts": 0,
"nextAttemptAt": "2026-11-01T09:30:00.000Z",
"lastAttemptAt": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"responseBody": "string",
"error": "string",
"durationMs": 0,
"attemptLog": [
{
"at": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"error": "string",
"durationMs": 0
}
],
"createdAt": "2026-11-01T09:30:00.000Z"
}/api/v1/webhook-deliveries/{id}/retryVersucht die Zustellung sofort erneut – auch nach endgültigem Fehlschlag.
Berechtigung: webhooks:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · WebhookDelivery
idstringPflichtobject"webhook_delivery"PflichtendpointIdstringPflichteventIdstringPflichteventTypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.teststatus"pending" | "succeeded" | "failed"PflichttestbooleanPflichtattemptsintegerPflicht-9007199254740991–9007199254740991nextAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991responseBodystring | nullPflichtAnfang der Antwort (max. 200 Zeichen; Werte sensibler Header und Tokens entfernt)errorstring | nullPflichtdurationMsinteger | nullPflicht-9007199254740991–9007199254740991attemptLogArray<object>PflichtLetzte Versucheatstring (date-time)PflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991errorstring | nullPflichtdurationMsintegerPflicht-9007199254740991–9007199254740991
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/webhook-deliveries/ID/retry' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "webhook_delivery",
"endpointId": "string",
"eventId": "string",
"eventType": "contact.created",
"status": "pending",
"test": false,
"attempts": 0,
"nextAttemptAt": "2026-11-01T09:30:00.000Z",
"lastAttemptAt": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"responseBody": "string",
"error": "string",
"durationMs": 0,
"attemptLog": [
{
"at": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"error": "string",
"durationMs": 0
}
],
"createdAt": "2026-11-01T09:30:00.000Z"
}/api/v1/webhook-endpointsBerechtigung: webhooks:read
Query-Parameter
limitintegerAnzahl Einträge (1–100)1–100 · Standard: 25cursorstring`nextCursor` der vorherigen Seitemax. 500 Zeichen
Antwort 200
object"list"PflichtdataArray<WebhookEndpoint>PflichtidstringPflichtobject"webhook_endpoint"PflichturlstringPflichtdescriptionstringPflichteventsArray<enum | "*">PflichtEreignistyp oder "*" für allepayloadFormat"json" | "text"PflichtContent-Type der Zustellung: json = application/json (Standard), text = text/plain mit identischem Body (für Plattformen, die nur so den Rohtext zur Signaturprüfung liefern, z. B. Make)activebooleanPflichtdisabledReasonstring | nullPflichtGrund der automatischen DeaktivierungdisabledAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)secretHintstringPflichtAnfang des SignaturgeheimnissescreatedVia"session" | "api_key" | "oauth"PflichtconsecutiveFailuresintegerPflicht-9007199254740991–9007199254740991failingSincestring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryStatus"succeeded" | "failed" | nullPflichtcreatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
hasMorebooleanPflichtnextCursorstring | nullPflicht
curl 'https://www.debt-flow.io/api/v1/webhook-endpoints' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"object": "list",
"data": [
{
"id": "string",
"object": "webhook_endpoint",
"url": "string",
"description": "string",
"events": [
"contact.created"
],
"payloadFormat": "json",
"active": false,
"disabledReason": "string",
"disabledAt": "2026-11-01T09:30:00.000Z",
"secretHint": "string",
"createdVia": "session",
"consecutiveFailures": 0,
"failingSince": "2026-11-01T09:30:00.000Z",
"lastDeliveryAt": "2026-11-01T09:30:00.000Z",
"lastDeliveryStatus": "succeeded",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}
],
"hasMore": false,
"nextCursor": "string"
}/api/v1/webhook-endpointsDebtFlow sendet abonnierte Ereignisse per POST (JSON Event) an die HTTPS-URL. Jede Anfrage ist signiert: DebtFlow-Signature: t=<Unix-Zeit>,v1=<HMAC-SHA256(secret, "<t>.<Body>") hex> (gleich auch als X-DebtFlow-Signature). Das Geheimnis (secret) steht nur in dieser Antwort. Per API-Schlüssel angelegte Endpunkte erhalten nur Ereignisse, deren Lese-Scope der Schlüssel hat.
Berechtigung: webhooks:write
Body (JSON) · WebhookEndpointCreate
urlstring (uri)PflichtHTTPS-Adresse, die POST-Anfragen annimmtmax. 2048 ZeicheneventsArray<enum | "*">PflichtEreignistyp oder "*" für alledescriptionstringmax. 200 ZeichenpayloadFormat"json" | "text"Standard jsonactiveboolean
Antwort 201 · WebhookEndpointCreated
idstringPflichtobject"webhook_endpoint"PflichturlstringPflichtdescriptionstringPflichteventsArray<enum | "*">PflichtEreignistyp oder "*" für allepayloadFormat"json" | "text"PflichtContent-Type der Zustellung: json = application/json (Standard), text = text/plain mit identischem Body (für Plattformen, die nur so den Rohtext zur Signaturprüfung liefern, z. B. Make)activebooleanPflichtdisabledReasonstring | nullPflichtGrund der automatischen DeaktivierungdisabledAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)secretHintstringPflichtAnfang des SignaturgeheimnissescreatedVia"session" | "api_key" | "oauth"PflichtconsecutiveFailuresintegerPflicht-9007199254740991–9007199254740991failingSincestring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryStatus"succeeded" | "failed" | nullPflichtcreatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)secretstringPflichtSignaturgeheimnis (whsec_…) – nur in dieser Antwort
curl -X POST 'https://www.debt-flow.io/api/v1/webhook-endpoints' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com",
"events": [
"contact.created"
],
"description": "string",
"payloadFormat": "json",
"active": false
}'{
"id": "string",
"object": "webhook_endpoint",
"url": "string",
"description": "string",
"events": [
"contact.created"
],
"payloadFormat": "json",
"active": false,
"disabledReason": "string",
"disabledAt": "2026-11-01T09:30:00.000Z",
"secretHint": "string",
"createdVia": "session",
"consecutiveFailures": 0,
"failingSince": "2026-11-01T09:30:00.000Z",
"lastDeliveryAt": "2026-11-01T09:30:00.000Z",
"lastDeliveryStatus": "succeeded",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"secret": "string"
}/api/v1/webhook-endpoints/{id}Berechtigung: webhooks:read
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · WebhookEndpoint
idstringPflichtobject"webhook_endpoint"PflichturlstringPflichtdescriptionstringPflichteventsArray<enum | "*">PflichtEreignistyp oder "*" für allepayloadFormat"json" | "text"PflichtContent-Type der Zustellung: json = application/json (Standard), text = text/plain mit identischem Body (für Plattformen, die nur so den Rohtext zur Signaturprüfung liefern, z. B. Make)activebooleanPflichtdisabledReasonstring | nullPflichtGrund der automatischen DeaktivierungdisabledAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)secretHintstringPflichtAnfang des SignaturgeheimnissescreatedVia"session" | "api_key" | "oauth"PflichtconsecutiveFailuresintegerPflicht-9007199254740991–9007199254740991failingSincestring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryStatus"succeeded" | "failed" | nullPflichtcreatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/webhook-endpoints/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "webhook_endpoint",
"url": "string",
"description": "string",
"events": [
"contact.created"
],
"payloadFormat": "json",
"active": false,
"disabledReason": "string",
"disabledAt": "2026-11-01T09:30:00.000Z",
"secretHint": "string",
"createdVia": "session",
"consecutiveFailures": 0,
"failingSince": "2026-11-01T09:30:00.000Z",
"lastDeliveryAt": "2026-11-01T09:30:00.000Z",
"lastDeliveryStatus": "succeeded",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/webhook-endpoints/{id}active: true aktiviert einen automatisch deaktivierten Endpunkt wieder und setzt den Fehlerzähler zurück. Die Ziel-URL eines Endpunkts lässt sich nur mit allen Lese-Berechtigungen ändern, mit denen er angelegt wurde (sonst 403 insufficient_scope).
Berechtigung: webhooks:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Body (JSON) · WebhookEndpointUpdate
urlstring (uri)HTTPS-Adresse, die POST-Anfragen annimmtmax. 2048 ZeicheneventsArray<enum | "*">Ereignistyp oder "*" für alledescriptionstringmax. 200 ZeichenpayloadFormat"json" | "text"activebooleantrue aktiviert wieder (setzt den Fehlerzähler zurück)
Antwort 200 · WebhookEndpoint
idstringPflichtobject"webhook_endpoint"PflichturlstringPflichtdescriptionstringPflichteventsArray<enum | "*">PflichtEreignistyp oder "*" für allepayloadFormat"json" | "text"PflichtContent-Type der Zustellung: json = application/json (Standard), text = text/plain mit identischem Body (für Plattformen, die nur so den Rohtext zur Signaturprüfung liefern, z. B. Make)activebooleanPflichtdisabledReasonstring | nullPflichtGrund der automatischen DeaktivierungdisabledAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)secretHintstringPflichtAnfang des SignaturgeheimnissescreatedVia"session" | "api_key" | "oauth"PflichtconsecutiveFailuresintegerPflicht-9007199254740991–9007199254740991failingSincestring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryStatus"succeeded" | "failed" | nullPflichtcreatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X PATCH 'https://www.debt-flow.io/api/v1/webhook-endpoints/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com",
"events": [
"contact.created"
],
"description": "string",
"payloadFormat": "json",
"active": false
}'{
"id": "string",
"object": "webhook_endpoint",
"url": "string",
"description": "string",
"events": [
"contact.created"
],
"payloadFormat": "json",
"active": false,
"disabledReason": "string",
"disabledAt": "2026-11-01T09:30:00.000Z",
"secretHint": "string",
"createdVia": "session",
"consecutiveFailures": 0,
"failingSince": "2026-11-01T09:30:00.000Z",
"lastDeliveryAt": "2026-11-01T09:30:00.000Z",
"lastDeliveryStatus": "succeeded",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}/api/v1/webhook-endpoints/{id}Löscht auch das Zustellprotokoll des Endpunkts.
Berechtigung: webhooks:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 204
Erfolg, keine Antwort
curl -X DELETE 'https://www.debt-flow.io/api/v1/webhook-endpoints/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"/api/v1/webhook-endpoints/{id}/rotate-secretDas alte Geheimnis ist sofort ungültig. Das neue steht nur in dieser Antwort. Nur mit allen Lese-Berechtigungen, mit denen der Endpunkt angelegt wurde (sonst 403 insufficient_scope).
Berechtigung: webhooks:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · WebhookEndpointCreated
idstringPflichtobject"webhook_endpoint"PflichturlstringPflichtdescriptionstringPflichteventsArray<enum | "*">PflichtEreignistyp oder "*" für allepayloadFormat"json" | "text"PflichtContent-Type der Zustellung: json = application/json (Standard), text = text/plain mit identischem Body (für Plattformen, die nur so den Rohtext zur Signaturprüfung liefern, z. B. Make)activebooleanPflichtdisabledReasonstring | nullPflichtGrund der automatischen DeaktivierungdisabledAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)secretHintstringPflichtAnfang des SignaturgeheimnissescreatedVia"session" | "api_key" | "oauth"PflichtconsecutiveFailuresintegerPflicht-9007199254740991–9007199254740991failingSincestring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastDeliveryStatus"succeeded" | "failed" | nullPflichtcreatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)updatedAtstring (date-time)PflichtZeitpunkt (ISO 8601)secretstringPflichtSignaturgeheimnis (whsec_…) – nur in dieser Antwort
curl -X POST 'https://www.debt-flow.io/api/v1/webhook-endpoints/ID/rotate-secret' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "webhook_endpoint",
"url": "string",
"description": "string",
"events": [
"contact.created"
],
"payloadFormat": "json",
"active": false,
"disabledReason": "string",
"disabledAt": "2026-11-01T09:30:00.000Z",
"secretHint": "string",
"createdVia": "session",
"consecutiveFailures": 0,
"failingSince": "2026-11-01T09:30:00.000Z",
"lastDeliveryAt": "2026-11-01T09:30:00.000Z",
"lastDeliveryStatus": "succeeded",
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z",
"secret": "string"
}/api/v1/webhook-endpoints/{id}/testSendet sofort ein signiertes webhook.test-Ereignis an diesen Endpunkt und liefert das Ergebnis. Ohne Wiederholung; zählt nicht für die automatische Deaktivierung.
Berechtigung: webhooks:write
Pfadparameter
idstringPflichtID der Ressourcemax. 128 Zeichen
Antwort 200 · WebhookDelivery
idstringPflichtobject"webhook_delivery"PflichtendpointIdstringPflichteventIdstringPflichteventTypeenumPflichtWerte: contact.created, contact.updated, contact.deleted, communication.created, debt.created, debt.updated, debt.phase_changed, debt.overdue, debt.paid, debt.deleted, payment.received, payment.deleted, installment_plan.created, installment_plan.updated, installment_plan.deleted, installment.due, installment.missed, residence_registry_inquiry.created, recommendation.created, letter.sent, letter.delivered, letter.returned, letter.failed, invoice.created, invoice.updated, invoice.finalized, invoice.sent, invoice.partially_paid, invoice.paid, invoice.overdue, invoice.canceled, invoice.deleted, invoice.handed_to_collection, credit_note.finalized, offer.created, offer.sent, offer.accepted, offer.rejected, offer.expired, offer.converted, receipt.created, receipt.processed, receipt.updated, receipt.booked, receipt.deleted, bank_transaction.imported, bank_transaction.matched, project.created, project.updated, project.archived, project.deleted, time_entry.created, time_entry.updated, time_entry.deleted, export.ready, accounting_period.closed, webhook.teststatus"pending" | "succeeded" | "failed"PflichttestbooleanPflichtattemptsintegerPflicht-9007199254740991–9007199254740991nextAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)lastAttemptAtstring (date-time) | nullPflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991responseBodystring | nullPflichtAnfang der Antwort (max. 200 Zeichen; Werte sensibler Header und Tokens entfernt)errorstring | nullPflichtdurationMsinteger | nullPflicht-9007199254740991–9007199254740991attemptLogArray<object>PflichtLetzte Versucheatstring (date-time)PflichtZeitpunkt (ISO 8601)responseStatusinteger | nullPflicht-9007199254740991–9007199254740991errorstring | nullPflichtdurationMsintegerPflicht-9007199254740991–9007199254740991
createdAtstring (date-time)PflichtZeitpunkt (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/webhook-endpoints/ID/test' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"{
"id": "string",
"object": "webhook_delivery",
"endpointId": "string",
"eventId": "string",
"eventType": "contact.created",
"status": "pending",
"test": false,
"attempts": 0,
"nextAttemptAt": "2026-11-01T09:30:00.000Z",
"lastAttemptAt": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"responseBody": "string",
"error": "string",
"durationMs": 0,
"attemptLog": [
{
"at": "2026-11-01T09:30:00.000Z",
"responseStatus": 0,
"error": "string",
"durationMs": 0
}
],
"createdAt": "2026-11-01T09:30:00.000Z"
}