Job Notifications

Enconvert supports three mechanisms for tracking asynchronous and batch jobs: batch status polling, email notifications, and webhook callbacks. You can use any combination to be alerted when a conversion job completes.

Private Keys Only: Job notifications and batch status polling are only available when authenticating with a private API key (X-API-Key: sk_live_...). Public keys do not support async or batch processing.

Overview

Method Parameter / Endpoint Description
Polling GET /v1/convert/batch/{batch_id} Poll for real-time status, progress counts, and download URLs.
Email notification_email Sends a completion email with job status and a dashboard link.
Webhook callback_url Sends a POST request with the job results to your server.

All three methods work for both single-URL async jobs and multi-URL batch jobs across the url-to-pdf, url-to-screenshot, website-to-pdf, and website-to-screenshot endpoints.


Batch Status Polling

The recommended way to track job progress. Poll the batch status endpoint with the batch_id returned in the initial 202 response.

GET /v1/convert/batch/{batch_id}
X-API-Key: sk_live_your_private_key

Response

{
    "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
        }
    ]
}

Status Values

Status Meaning
processing At least one URL is still being converted.
completed All URLs converted successfully.
partial All URLs finished, but some failed.
failed All URLs failed.

In ZIP mode (output_mode: "zip"), a zip_download_url is provided for the entire archive when complete. In individual mode, each item has its own download_url.

For full response schema details, see Batch Processing.


Email Notifications

Include the notification_email parameter in your request to receive an email when the job completes. If you omit this parameter, the email is sent to the project owner's email address by default.

Example

curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "async_mode": true,
    "notification_email": "team@yourcompany.com"
  }'

Response (HTTP 202 Accepted)

{
    "status": "processing",
    "batch_id": "550e8400-e29b-41d4-a716-446655440000",
    "url_count": 1,
    "output_format": "individual"
}

Email Content

The completion email includes:

  • Status header with a colored banner (green for success, red for failure)
  • Job ID and Batch ID (if part of a batch)
  • Status text (success or failed)
  • Static text directing users to download files from their dashboard
  • Tasks table (ZIP mode batch jobs only) with columns: #, URL (truncated to 50 characters), status, and output filename

In individual mode (including multi-URL individual batches), each per-URL email contains only the job ID and status -- no tasks table. In ZIP mode, the single batch email includes the full tasks table with all URLs and their statuses.

Default behavior: If you do not include notification_email in your request, the completion email is sent to the project owner's email address automatically. To suppress email notifications entirely, this default cannot currently be disabled.

Webhook Callbacks

Include the callback_url parameter in your request to receive a webhook POST when the job completes. Requires a plan with webhook access.

Example

curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "async_mode": true,
    "callback_url": "https://yourapp.com/webhooks/enconvert"
  }'

Response (HTTP 202 Accepted)

{
    "status": "processing",
    "batch_id": "550e8400-e29b-41d4-a716-446655440000",
    "url_count": 1,
    "output_format": "individual"
}

Single URL / Individual Mode Callback Payload

In individual mode, a separate POST is sent for each URL as it completes:

{
    "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
}

For a failed conversion:

{
    "job_id": "12345",
    "status": "failed",
    "batch_id": "550e8400-e29b-41d4-a716-446655440000"
}

ZIP Mode Callback Payload

In ZIP mode, a single POST is sent when the entire batch completes:

{
    "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"}
    ]
}
Individual vs ZIP notification behavior: In individual mode, you receive N separate webhook POSTs (one per URL) and N separate emails. In ZIP mode, you receive one webhook POST and one email for the entire batch. Design your webhook handler accordingly.

Using Multiple Notification Methods Together

You can combine polling, email, and webhook in the same request. All three work independently.

curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": [
      "https://example.com/page-1",
      "https://example.com/page-2"
    ],
    "notification_email": "team@yourcompany.com",
    "callback_url": "https://yourapp.com/webhooks/enconvert"
  }'

After submitting, you can: 1. Poll GET /v1/convert/batch/{batch_id} for real-time progress 2. Receive a webhook POST at your callback URL when each conversion finishes 3. Receive an email at the specified address when each conversion finishes


Notification Parameters

Parameter Type Required Default Description Plan Gating
notification_email string No Project owner email Email address to receive job completion notifications. --
callback_url string No -- URL to receive a webhook POST on completion. Requires webhook access

Webhook Delivery Requirements

Requirement Detail
Method Enconvert sends a POST request with Content-Type: application/json.
Timeout Your endpoint must respond within 30 seconds.
Success codes HTTP 200, 201, 202, or 204 are treated as successful delivery.
Retries No retries on failure. If the webhook delivery fails (non-success response or timeout), results are still available via batch status polling.
Authentication No authentication headers are sent. Validate the batch_id against your records if needed.

Subscription Plan Gating

Feature Free Starter Pro Enterprise
Async mode No Yes Yes Yes
Batch status polling No Yes Yes Yes
Email notifications No Yes Yes Yes
Webhook callbacks (callback_url) No No Yes Yes
Note: Email notifications are not separately feature-gated -- they are available to any private API key user with async access. The notification_email parameter does not require a specific plan feature. Webhook callbacks (callback_url) require the has_webhook feature, which is available on Pro plans and above.

Testing Webhooks

During development, use webhook.site to generate a temporary callback URL for testing:

curl -X POST https://api.enconvert.com/v1/convert/url-to-pdf \
  -H "X-API-Key: sk_live_your_private_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "async_mode": true,
    "callback_url": "https://webhook.site/your-unique-id"
  }'

Visit your webhook.site dashboard to inspect the exact callback payload once the job completes.