Temporal Standalone Activity Start Delay: a scheduled Sume submit
Start Delay holds only the first Activity Task; retries follow the Retry Policy. A delayed Sume submit needs one stable Idempotency-Key for every attempt.

For a Temporal Standalone Activity that submits a Sume job later, such as a reminder video that should start tomorrow, use Start Delay for the wait and one fixed Idempotency-Key for the submit, because Temporal's documentation says the delay applies to the first Activity Task only and retries are dispatched by the Retry Policy, not the delay. A retry therefore reaches Sume immediately and with the same payload, which is the case Sume's idempotency is for.
Temporal's behavior is from its Standalone Activity documentation, read 2026-10-03; Sume's from Jobs and results and Errors and rate limits. I did not run a Standalone Activity against Sume.
What does the delay cover?
The docs describe Start Delay as scheduling a job to begin after a waiting period, for deferred work like reminder emails without creating a recurring schedule. The delay is for the first task. After a failed attempt, the Retry Policy decides when the next one runs, so a transient 503 from Sume or a worker restart does not wait another full delay.
The activity also has the usual timeouts, Schedule-To-Start, Start-To-Close, Schedule-To-Close and Heartbeat. I did not verify from the page whether the start delay counts against Schedule-To-Start, so check that before setting a short one.
| Moment | Temporal behavior | Sume side |
|---|---|---|
| Waiting for the scheduled time | Start Delay holds the first Activity Task | Nothing exists yet; no job, no reservation |
| First attempt runs | Activity submits to Sume | Send Idempotency-Key and mode: "async" or webhook |
| Retry after a failure | Retry Policy decides timing, not the delay | Same key and same body return the original job |
| Key reused with a changed body | Not a Temporal concern | 409 idempotency_conflict |
What should the key be built from?
Build it from the Activity ID or from a business id you set once at start, for example the customer id and the occasion, and keep any value that changes per attempt out of the body. Sume's rule is to reuse a key only for the same operation and payload; a prompt that embeds a timestamp generated inside the retried activity would change the payload and return 409 idempotency_conflict instead of the original job.
After the submit, the activity should not hold the whole render open. Store the job_id, then poll status_url honoring next_poll_after_seconds, or use webhook mode, and read the result when result_ready is true.
Sources
Related posts
More in Developers
- Test two caption looks on one Reel with source_caption_id
Restyling captions with source_caption_id reuses the first caption job's video and word timings, so no second transcription runs. Billing stays one render each.
- How to test a webhook URL before a Sume Format run uses it
POST /v1/webhooks/test-deliveries sends a signed webhook.test event to your URL. See the scope, the response fields, and the secret check, with no paid run.
- TikTok Display API video query: read is_aigc on 20 posts per call
TikTok's Query Videos endpoint returns is_aigc and counts for up to 20 video ids per call. Short Python audit, and where Sume fits.
- TikTok oEmbed: embed a posted clip, or host the MP4 yourself?
TikTok's oEmbed endpoint turns a video URL into an embed blockquote. When that beats hosting the file, and what a Sume-made MP4 changes about the choice.
Written by Sume