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.

5 min readSume
All posts

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.

Start Delay and retries from Temporal's Standalone Activity page, read 2026-10-03, next to the Sume side.
MomentTemporal behaviorSume side
Waiting for the scheduled timeStart Delay holds the first Activity TaskNothing exists yet; no job, no reservation
First attempt runsActivity submits to SumeSend Idempotency-Key and mode: "async" or webhook
Retry after a failureRetry Policy decides timing, not the delaySame key and same body return the original job
Key reused with a changed bodyNot a Temporal concern409 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

All Developers posts

Written by Sume