Webhooks: Get Told the Moment Your Video Is Ready
Videos take minutes to half an hour to render. Stop polling: the moment a job ends, the result is pushed to your server. Where it fits, the two ways in, and setup in three steps.
About 10 minutes
Video takes time. A 5–10 second clip usually renders in a few minutes to a quarter of an hour, a 30-second clip in twenty to thirty minutes, and at peak hours there can be a queue. Until now you had to ask for the job status every few seconds: write the loop, handle timeouts, and remember which jobs were still open when your service restarted.
Not any more. The moment a job ends, whether it succeeded or failed, we push the result straight to your server.
Two ways to receive it
- An account endpoint: in the console, open Settings → Webhook, enter the URL that should receive events and tick the events you want. Every video and image job you submit through the API then reports back when it ends.
- Per request: add a
callback_urlwhen you submit a job, and that job's result goes only to that URL. If you're used to writingcallBackUrl, that works too.
curl https://nezhagate.com/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "seedance-2.5", "prompt": "a paper boat drifting down a rainy street at night", "duration": 5,
"callback_url": "https://your-app.com/webhooks/nezhagate"}'Where it fits
- Video apps, mini-programs and websites: your user can close the page right after submitting. When the video is ready you get the push, then send them an in-app message, a text or an email and drop the clip into their library.
- Images in bulk: submit hundreds of product shots or ad visuals at once, and each one lands in your media library or CDN as soon as it's done. Failures are logged on their own so you can tweak the prompt and resubmit.
- Chat bots: someone posts a prompt in a Telegram, Discord, Lark or WeCom group; your bot answers "generating…" straight away and posts the video back when the push arrives.
- Serverless functions: Vercel, Cloudflare Workers and cloud functions aren't made for half-hour polling loops. The function can end right after submitting; the push triggers the next step.
- Low-balance alerts: get one push when your balance drops below the number of credits you set. Route it to your team's Slack, Lark or DingTalk channel so someone tops up before it runs out, not after your service stops in the middle of the night.
Can you rely on it?
- Verifiable: every push is signed with the Standard Webhooks scheme (the same one OpenAI's webhooks use). There are ready-made libraries for most languages, and a few lines of code confirm a push really came from us.
- Retried automatically: if your server doesn't answer with a 2xx within 10 seconds, we try again after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours. Every retry keeps the same event ID, so deduplicating is easy.
- Complete: the push carries exactly what the job endpoint returns, video URL and usage included. A failed job has already been fully refunded, and the push says why it failed.
- Logged: the console lists recent deliveries with the result of each, keeps them for 30 days, and lets you resend one.
Set it up in three steps
- Give your server a URL that accepts POST requests. The webhook docs have complete signature-checking examples in Python and Node.js.
- In the console, open Settings → Webhook, enter the URL and click "Send a test event" to make sure it arrives.
- Submit jobs as usual and wait for the push. To send one particular job somewhere else, add
callback_urlto that request.
Sign up and create a key in the console. Pay as you go; failed requests are never billed.
Get API Key → PricingMore guides: SillyTavern · Cherry Studio · Cline