Rendex
Use Case

Async & Batch Rendering with Signed Webhooks

Fire 500 URLs at a single endpoint. Receive HMAC-signed webhook callbacks as each capture finishes — or poll job status on demand. No workers to run, no queues to monitor.

The Problem

Synchronous screenshot APIs hold your thread open for 5–30 seconds per URL. That's fine for one render, crippling for 500. Building your own async pipeline means a queue, workers, retry logic, webhook delivery, idempotency keys, and dead-letter handling — weeks of infrastructure work to capture a nightly batch.

The Solution

Rendex ships first-class async and batch endpoints with signed webhooks. Submit one URL in async mode or up to 500 URLs as a batch, receive a job ID immediately, and get HMAC-SHA256-signed webhook deliveries when each render completes. Status polling, automatic retries, and idempotent job submission are built in.

See it in action

A flow diagram: your app POSTs an async render, Rendex returns a jobId, the job moves from queued to done, and Rendex POSTs a job.completed webhook back to your app.

Get Started in Minutes

batch.sh
curl -X POST "https://api.rendex.dev/v1/screenshot/batch" \
  -H "X-API-Key: $RENDEX_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://example.com/page1", "https://example.com/page2"],
    "defaults": { "fullPage": true, "format": "png" },
    "webhookUrl": "https://your-app.com/hooks/rendex"
  }'
# => { "batchId": "btc_01HX...", "jobs": [{ "jobId": "job_01..." }, ...] }
async_batch.py
from rendex import Rendex

rendex = Rendex("YOUR_API_KEY")

batch = rendex.batch(
    urls=["https://example.com/1", "https://example.com/2"],
    defaults={"full_page": True, "format": "png"},
    webhook_url="https://your-app.com/hooks/rendex",
)

print(f"Batch {batch['data']['batchId']} submitted with {len(batch['data']['jobs'])} jobs")

# Or poll status directly:
status = rendex.batch_status(batch["data"]["batchId"])
for job in status["data"]["jobs"]:
    print(job["jobId"], job["status"], job.get("resultUrl"))

100 free API calls/month — no credit card required. Get your API key and start building.

Built for This Use Case

Batch up to 500 URLs

Submit a single request with up to 500 URLs. Enterprise plans lift batch caps. Every URL gets its own job ID for independent tracking and retries.

HMAC-Signed Webhooks

Receive HTTP POST callbacks as each capture finishes. Every webhook is signed with HMAC-SHA256 over the body — verify and trust the delivery.

Status Polling

Prefer pull over push? Poll /v1/jobs/:id or /v1/batches/:id for real-time status, result URLs, and per-job metadata.

Custom S3 / R2 Storage (Pro+)

Pro and Enterprise plans can deliver batch results directly to your own S3-compatible bucket (AWS, R2, Wasabi, Minio) — skip the download step entirely.

Start Free, Scale as You Grow

100 calls/month free. Starter at $69/mo for 10K calls (or $58/mo billed annually — 2 months free). Pro at $179/mo for 100K calls.

Frequently Asked Questions

Related Resources