Changelog
New

Get a callback when a specific job finishes

Pass a callback when you create a job and Rendobar POSTs the result straight to your URL the moment that job reaches a terminal state, so an orchestrator can resume without polling.

API SDK Dashboard

Org webhooks broadcast every job to one static URL. That works for a dashboard, but it does not fit an orchestrator that dispatched one job and needs to be woken when that exact job finishes. Until now the answer was to poll GET /jobs/:id every couple of seconds.

Now you can attach a callback to a single job. On any terminal state (complete, failed, or cancelled) Rendobar POSTs the standard job envelope, identical to the webhook body, straight to your URL.

import { createClient } from "@rendobar/sdk";
const client = createClient({ apiKey: "rb_YOUR_KEY" });
const job = await client.jobs.create({
type: "ffmpeg",
inputs: { source: "https://example.com/clip.mp4" },
params: { command: "ffmpeg -i source -t 1 output.mp4" },
callback: { url: "https://your-worker.example.com/rb/job-123" },
});

The correlation lives in the URL, so your receiver stays stateless. This is what a Cloudflare Workflows step needs: put the workflow instance id in the callback path, suspend on waitForEvent, and let the callback resume the step when the job lands. No polling loop, no external job-to-instance router.

Send your own headers

Set callback.headers to POST straight at an authed target with no receiver in between. A common case is pointing the callback at Cloudflare’s Workflows events endpoint with a bearer token, so there is no shim Worker at all.

callback: {
url: "https://api.cloudflare.com/.../events",
headers: { Authorization: "Bearer YOUR_CF_TOKEN" },
}

Verify it came from Rendobar

The callback URL is the capability, so the default is unsigned. When you want proof of origin, set callback.verify: true. The POST then carries an X-Rendobar-Signature using the same HMAC scheme as webhooks. Fetch your org callback signing secret once from GET /orgs/current/callback-secret and check it with verifyCallback from @rendobar/sdk/webhooks.

Watch delivery

GET /jobs/:id now returns callback.status (pending, delivered, or failed), and the job detail page in the dashboard shows it too. The callback URL and any headers you send are never returned by the API. They stay secret.

Delivery is at-least-once with retries and a dead-letter path, so dedupe on the X-Rendobar-Delivery id. Terminal events always fire, so a waiting step can never hang.

Org-wide delivery and signature verification are covered in the webhooks guide. The terminal states that fire a callback are listed in job lifecycle.

Share