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
- Tenacity retries forever with no wait: safe Sume submit
Tenacity's default is to retry forever without waiting. Four settings turn it into a bounded, jittered retry that is safe around a paid Sume submit.
- Test a language on Sume STT with a 30-second sample first
Vendors split languages into trained and verified. On Sume STT, language_code is a hint, so cut a 30-second sample and compare auto-detect with your hint.
- Test your Sume webhook receiver locally: openssl and curl
Sign a fake job.completed body with openssl, post it with curl and confirm your receiver answers 200 for valid, and 401 for stale and forged Sume deliveries.
- 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.
Written by Sume