Zapier action timeout at 30 seconds: use Sume webhook mode

Zapier actions time out at 30 seconds, so submit Sume jobs with mode webhook: the call returns a job id at once and Sume posts the result to your URL later.

4 min readSume
All posts

Do not wait for the video inside the Zapier action. Zapier's page says actions time out after 30 seconds and to use webhook callbacks for long-running async operations. Submit the Sume job with mode: "webhook" and a webhook_url: the submit returns 202 with a job id, and Sume posts the terminal event to your URL when the job ends.

Zapier facts are from its action-timeout page, read 2026-10-01. Sume facts are from Webhooks and Jobs and results.

Why not just use sync mode?

Sume's sync mode waits at most 30 seconds (wait_timeout_seconds, max 30), which is the same ceiling Zapier gives the action. A video render usually runs past that. When the wait runs out, the docs say to poll and not resubmit.

How do the modes compare for a Zapier action?

Sume communication modes, from the docs read 2026-10-01.
ModeWhat the submit returnsFit for a 30 s action
async (default)202 and a job id; poll status_urlYes, needs a second Zap to poll
syncWaits up to 30 s, then the same envelopeOnly for short jobs
webhook202 and a job id; callback storedYes, Sume calls you

What does the submit look like?

Send mode: "webhook" with webhook_url. The URL must be public HTTPS; localhost, private-network and non-HTTPS URLs are rejected. Point it at a Zapier catch-hook URL or at your own receiver.

const res = await fetch("https://api.sume.com/v1/avatar-1.0/generate", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.SUME_API_KEY,
    "Content-Type": "application/json",
    "Idempotency-Key": "zap-run-001",
  },
  body: JSON.stringify({
    mode: "webhook",
    webhook_url: "https://hooks.example.com/sume",
    avatar_handle: "studio_presenter",
    input: { type: "prompt", prompt: "Friendly studio presenter" },
  }),
});
console.log(res.status, (await res.json()).request_id); // request_id is the job id

What should the receiving Zap do?

Return any 2xx after storing the event, and use job_id as the idempotency key, since delivery retries up to 10 times. Keep status_url polling available as a backup for events that never arrive. More on the receiving side in debug Sume webhook delivery.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume