Webhook-Callbacks & Job-Benachrichtigungen für Konvertierungen#
EnConvert benachrichtigt dich über drei unabhängige Mechanismen, wenn asynchrone und Batch-Konvertierungsjobs abgeschlossen sind: Polling von GET /v1/convert/batch/{batch_id}, Webhook-Callbacks über den Parameter callback_url und E-Mail-Benachrichtigungen über notification_email. Alle drei lassen sich in einer einzigen Anfrage kombinieren, und fertige Dateien werden über Download-URLs in der Batch-Status-Antwort abgerufen. Diese Seite dokumentiert die Callback-Payloads, Zustellanforderungen und Plan-Beschränkungen für jede Methode.
X-API-Key: sk_...) authentifizierst. Öffentliche Schlüssel unterstützen weder async noch Batch-Verarbeitung.
Überblick#
| Methode | Parameter / Endpunkt | Beschreibung |
|---|---|---|
| Polling | GET /v1/convert/batch/{batch_id} |
Fragt Echtzeit-Status, Fortschrittszahlen und Download-URLs ab. |
notification_email |
Sendet eine Abschluss-E-Mail mit Job-Status und einem Dashboard-Link. | |
| Webhook | callback_url |
Sendet eine POST-Anfrage mit den Job-Ergebnissen an deinen Server. |
Alle drei Methoden funktionieren sowohl für asynchrone Einzel-URL-Jobs als auch für Multi-URL-Batch-Jobs über die Endpunkte url-to-pdf, url-to-screenshot, website-to-pdf und website-to-screenshot.
Batch-Status-Polling#
Die empfohlene Methode, um den Job-Fortschritt zu verfolgen. Frage den Batch-Status-Endpunkt mit der batch_id ab, die in der initialen 202-Antwort zurückgegeben wurde.
GET /v1/convert/batch/{batch_id}
X-API-Key: sk_your_private_key
Antwort#
{
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "processing",
"total": 3,
"completed": 1,
"failed": 0,
"in_progress": 2,
"output_mode": "individual",
"zip_download_url": null,
"items": [
{
"source_url": "https://example.com/page-1",
"status": "Success",
"download_url": "https://spaces.example.com/...",
"output_file_size": 184320,
"duration": "3.12"
},
{
"source_url": "https://example.com/page-2",
"status": "In Progress",
"download_url": null,
"output_file_size": null,
"duration": null
}
]
}
Statuswerte#
| Status | Bedeutung |
|---|---|
processing |
Mindestens eine URL wird noch konvertiert. |
completed |
Alle URLs wurden erfolgreich konvertiert. |
partial |
Alle URLs sind fertig, aber einige sind fehlgeschlagen. |
failed |
Alle URLs sind fehlgeschlagen. |
Im ZIP-Modus (output_mode: "zip") wird bei Abschluss eine zip_download_url für das gesamte Archiv bereitgestellt. Im Individual-Modus hat jedes Item seine eigene download_url.
Vollständige Details zum Antwortschema findest du unter Batch-Verarbeitung.
E-Mail-Benachrichtigungen#
Füge den Parameter notification_email zu deiner Anfrage hinzu, um eine E-Mail zu erhalten, sobald der Job abgeschlossen ist. Wenn du diesen Parameter weglässt, wird die E-Mail standardmäßig an die E-Mail-Adresse des Projektinhabers gesendet.
Beispiel#
curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
-H "X-API-Key: sk_your_private_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"async_mode": true,
"notification_email": "[email protected]"
}'
Antwort (HTTP 202 Accepted)#
{
"status": "processing",
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"url_count": 1,
"output_format": "individual"
}
E-Mail-Inhalt#
Die Abschluss-E-Mail enthält:
- Status-Header mit einem farbigen Banner (grün bei Erfolg, rot bei Fehlschlag)
- Job-ID und Batch-ID (falls Teil eines Batches)
- Statustext (Erfolg oder fehlgeschlagen)
- Statischer Text, der Nutzer anweist, Dateien über ihr Dashboard herunterzuladen
- Tasks-Tabelle (nur bei ZIP-Modus-Batch-Jobs) mit den Spalten: #, URL (gekürzt auf 50 Zeichen), Status und Ausgabedateiname
Im Individual-Modus (einschließlich Multi-URL-Individual-Batches) enthält jede URL-bezogene E-Mail nur die Job-ID und den Status -- keine Tasks-Tabelle. Im ZIP-Modus enthält die einzelne Batch-E-Mail die vollständige Tasks-Tabelle mit allen URLs und deren Status.
notification_email nicht in deiner Anfrage angibst, wird die Abschluss-E-Mail automatisch an die E-Mail-Adresse des Projektinhabers gesendet. Dieses Standardverhalten kann derzeit nicht deaktiviert werden, um E-Mail-Benachrichtigungen vollständig zu unterdrücken.
Webhook-Callbacks#
Füge den Parameter callback_url zu deiner Anfrage hinzu, um bei Abschluss des Jobs einen Webhook-POST zu erhalten. Erfordert einen Plan mit Webhook-Zugriff.
Beispiel#
curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
-H "X-API-Key: sk_your_private_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"async_mode": true,
"callback_url": "https://yourapp.com/webhooks/enconvert"
}'
Antwort (HTTP 202 Accepted)#
{
"status": "processing",
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"url_count": 1,
"output_format": "individual"
}
Callback-Payload für Einzel-URL / Individual-Modus#
Im Individual-Modus wird für jede URL bei Abschluss ein separater POST gesendet:
{
"job_id": "12345",
"status": "success",
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"gcs_uri": "env/files/{project_id}/url-to-pdf/example_20260405_123456789.pdf",
"filename": "example_20260405_123456789.pdf",
"file_size": 184320
}
Bei einer fehlgeschlagenen Konvertierung:
{
"job_id": "12345",
"status": "failed",
"batch_id": "550e8400-e29b-41d4-a716-446655440000"
}
Callback-Payload für ZIP-Modus#
Im ZIP-Modus wird ein einzelner POST gesendet, wenn der gesamte Batch abgeschlossen ist:
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "success",
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"gcs_uri": "env/files/{project_id}/url-to-pdf/batch_20260405_123456789.zip",
"filename": "batch_20260405_123456789.zip",
"file_size": 456789,
"total_tasks": 3,
"successful_tasks": 2,
"failed_tasks": 1,
"tasks": [
{"url": "https://example.com/page-1", "status": "success", "filename": "page1.pdf"},
{"url": "https://example.com/page-2", "status": "success", "filename": "page2.pdf"},
{"url": "https://invalid-url.example", "status": "failed", "error": "Page load timeout"}
]
}
Mehrere Benachrichtigungsmethoden gemeinsam nutzen#
Du kannst Polling, E-Mail und Webhook in derselben Anfrage kombinieren. Alle drei funktionieren unabhängig voneinander.
curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
-H "X-API-Key: sk_your_private_key" \
-H "Content-Type: application/json" \
-d '{
"url": [
"https://example.com/page-1",
"https://example.com/page-2"
],
"notification_email": "[email protected]",
"callback_url": "https://yourapp.com/webhooks/enconvert"
}'
Nach dem Absenden kannst du:
1. Abfragen von GET /v1/convert/batch/{batch_id} für Echtzeit-Fortschritt
2. Einen Webhook-POST erhalten an deiner Callback-URL, sobald jede Konvertierung abgeschlossen ist
3. Eine E-Mail erhalten an der angegebenen Adresse, sobald jede Konvertierung abgeschlossen ist
Benachrichtigungsparameter#
| Parameter | Typ | Erforderlich | Standard | Beschreibung | Plan-Beschränkung |
|---|---|---|---|---|---|
notification_email |
string |
Nein | E-Mail des Projektinhabers | E-Mail-Adresse für Job-Abschluss-Benachrichtigungen. | -- |
callback_url |
string |
Nein | -- | URL, die bei Abschluss einen Webhook-POST erhält. | Erfordert Webhook-Zugriff |
Anforderungen an die Webhook-Zustellung#
| Anforderung | Detail |
|---|---|
| Methode | EnConvert sendet eine POST-Anfrage mit Content-Type: application/json. |
| Timeout | Dein Endpunkt muss innerhalb von 30 Sekunden antworten. |
| Erfolgscodes | HTTP 200, 201, 202 oder 204 gelten als erfolgreiche Zustellung. |
| Wiederholungen | Keine Wiederholungen bei Fehlschlag. Wenn die Webhook-Zustellung fehlschlägt (keine Erfolgsantwort oder Timeout), bleiben die Ergebnisse weiterhin über Batch-Status-Polling verfügbar. |
| Authentifizierung | Es werden keine Authentifizierungs-Header gesendet. Prüfe bei Bedarf die batch_id gegen deine eigenen Aufzeichnungen. |
Plan-Beschränkungen nach Abonnement#
| Funktion | Founding | Indie | Studio | Enterprise |
|---|---|---|---|---|
| Async-Modus | Nein | Ja | Ja | Ja |
| Batch-Status-Polling | Nein | Ja | Ja | Ja |
| E-Mail-Benachrichtigungen | Nein | Ja | Ja | Ja |
Webhook-Callbacks (callback_url) |
Nein | Nein | Ja | Ja |
notification_email erfordert kein bestimmtes Plan-Feature. Webhook-Callbacks (callback_url) erfordern das Feature has_webhook, das ab dem Studio-Plan verfügbar ist.
Webhooks testen#
Verwende während der Entwicklung webhook.site, um eine temporäre Callback-URL zum Testen zu generieren:
curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
-H "X-API-Key: sk_your_private_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"async_mode": true,
"callback_url": "https://webhook.site/your-unique-id"
}'
Besuche dein webhook.site-Dashboard, um die exakte Callback-Payload zu untersuchen, sobald der Job abgeschlossen ist.
Häufig gestellte Fragen#
Wie erhalte ich einen Webhook-Callback, wenn ein Dateikonvertierungsjob abgeschlossen ist?#
Füge den Parameter callback_url zusammen mit einem privaten API-Schlüssel zu deiner Anfrage hinzu. EnConvert sendet einen POST mit Content-Type: application/json an diese URL, sobald der Job abgeschlossen ist. Webhook-Callbacks erfordern einen Plan mit Webhook-Zugriff (Studio, Production oder Enterprise).
Wiederholt EnConvert fehlgeschlagene Webhook-Zustellungen?#
Nein. Dein Endpunkt muss innerhalb von 30 Sekunden mit HTTP 200, 201, 202 oder 204 antworten. Schlägt die Zustellung fehl, bleiben die Ergebnisse weiterhin über Batch-Status-Polling unter GET /v1/convert/batch/{batch_id} verfügbar.
Kann ich E-Mail-, Webhook- und Polling-Benachrichtigungen zusammen verwenden?#
Ja. notification_email, callback_url und Status-Polling funktionieren alle unabhängig voneinander und lassen sich in derselben Anfrage kombinieren. Wird notification_email weggelassen, geht die Abschluss-E-Mail standardmäßig an die E-Mail-Adresse des Projektinhabers.
Warum erhalte ich einen Webhook pro URL statt eines für den gesamten Batch?#
Im Individual-Modus erhältst du N separate Webhook-POSTs (einen pro URL) und N separate E-Mails. Um einen einzelnen Webhook und eine einzelne E-Mail für den gesamten Batch zu erhalten, verwende den ZIP-Modus, der einen POST mit total_tasks, successful_tasks, failed_tasks und einem tasks-Array sendet.
Wie kann ich Webhook-Callbacks während der Entwicklung testen?#
Verwende webhook.site, um eine temporäre URL zu generieren, und übergib sie als callback_url in deiner Anfrage. Das webhook.site-Dashboard zeigt die exakte JSON-Payload, die EnConvert bei Abschluss des Jobs liefert.