Skip to content
GuideAPIANT.aiv2

Delays, snooze and waits

View .md

How APIANT automations pause for a number of seconds or snooze until a date and time, how parked runs resume, where waits are not allowed, and how to wake or cancel snoozed runs.

An automation can stop partway through a run and continue later: after a fixed delay, at a date and time, or when something else happens. A waiting run is parked. Its progress is saved, nothing holds it in memory, and it survives platform restarts.

Delay actions

The System app has three actions that park a run until a time:

ActionInputsUse
Pause for a specified number of secondsSeconds to pause, a setting (default 1)A fixed delay, such as waiting 60 seconds for an app to finish processing
Pause for a random number of secondsMin and max seconds to pause, settings (defaults 1 and 2)Spreading out calls so they do not arrive at the same moment
Snooze automationvalue, modifiers, tz_offsetWaiting until a date and time, or until an offset from one

Ask for them in plain English: "wait 10 minutes, then send the follow-up", "hold this until two hours before the appointment starts".

The System app needs no connection. There is no separate date and time app for these actions.

Snooze inputs

InputAcceptsExamples
valueA date and time, natural language, or Unix epoch seconds. Blank means now.{{ trigger['Appointment Start Time'] }}, in 3 days, next friday, now, 1767225600
modifiersAdjustments applied to value, using d, h, m and s, separated by spaces-2h, +1d -30m
tz_offsetBlank uses the server's timezone (generally UTC) for a value with no timezone. ACCOUNT converts a UTC value to your account's timezone. ACCOUNT_UTC converts a value in your account's timezone to UTC. A number is an offset in seconds.ACCOUNT_UTC

Leave tz_offset blank when the value already carries a timezone, such as an ISO 8601 timestamp with an offset. An offset entered for such a value is still applied.

Examples:

Goalvaluemodifiers
Wait 30 minutesnow+30m
Two hours before an appointment{{ trigger['Appointment Start Time'] }}-2h
Three days after signup{{ trigger.body.signed_up_at }}+3d

If the computed time is already in the past, the step does not wait and the run continues immediately.

What a delay step outputs

All three actions declare Target at, Resumed at, Waited seconds and Timed out. After a run has actually waited, only Resumed at and Timed out hold values; Target at and Waited seconds are empty. Use Resumed at to confirm the step waited, and keep the target time in the step that computed it if later steps need it.

How a parked run resumes

  1. The run parks at the delay step. Its status in Execution History becomes snoozed.
  2. At the target time, APIANT picks the run up. A sweep also checks for due runs every 30 seconds, so a resume can land up to about half a minute after the target.
  3. The run continues with the step after the delay step, with the outputs of earlier steps intact.

When the automation is turned off

Turning an automation off does not cancel its parked runs. They are kept, and they resume on the next sweep after you turn the automation back on, even if their target time passed while it was off. Pending automatic retries are the exception: turning an automation off removes them. See Error handling and retries.

Where a run cannot wait

A delay step fails the run, with an error, in three places:

PlacementWhyInstead
An automation with a polling or Collector triggerThe steps run inside the trigger's per-record loop, which cannot pauseUse a webhook, manual or scheduled trigger
A parallel branchA branch cannot be resumed on its ownPut the delay before or after the parallel step
An ordinary automation called synchronously by anotherA synchronous child runs inside its caller and cannot pauseBuild the target as a subroutine, or launch it asynchronously

A delay inside a subroutine, a condition or a loop works. See Subroutines and calling automations.

The polling restriction is the one most often hit. "Poll for new rows, snooze until each row's date, send a reminder" saves without complaint and then fails at the snooze step on every run. Split it in two: the polling automation launches a second automation in the background, passing the record and naming a latch group, and that automation snoozes. See Subroutines and calling automations.

Waking or cancelling snoozed runs

In Execution History, open a run and filter its records to Snoozed. Two buttons act on every snoozed record of that run:

  • Wake up all snoozed… moves the target time of Snooze and Pause waits to now, so they resume on the next sweep, within about 30 seconds. Form and approval waits are not affected.
  • Cancel all snoozed… removes every wait on that run's records, including form, approval, latch and retry waits, so the records never resume. The browser asks you to confirm, and this cannot be undone.

From Claude Code, you can also ask Claude to cancel the snoozed runs of an automation, or one snoozed run. Cancelled runs are marked halted and never resume. The assistant in the app cannot cancel snoozed runs; use the Execution History buttons instead.

With the Snoozed filter selected, the two buttons appear above the run's record list.

Other kinds of wait

The same parking applies to steps that wait for something other than a time. Each has its own page:

WaitContinues whenTimeout
Await form submissionSomeone submits the formOptional variant with a timeout
Await human moderationSomeone approves or denies the itemOptional variant with a timeout and a default result
Wait for latched automationsEvery launched child automation has finishedOptional on the engine step
Snooze automation, PauseThe target time arrivesNot applicable

See Hosted forms, Human approval and Fan-out and fan-in.

A run that fails with a retryable error is also parked while it waits for its next automatic attempt. See Error handling and retries.

Troubleshooting

SymptomLikely causeWhat to do
The run fails at the snooze step with "not allowed inside a parallel branch or execute-automation child run"The delay is in a parallel branch or a synchronously called automationMove the delay, or change how the automation is called
The run fails at the snooze step on every polled recordThe automation has a polling triggerMove the waiting into a separate automation launched asynchronously
The step did not waitThe computed time was already pastCheck value, modifiers and tz_offset against the source data
Runs stay snoozed past their timeThe automation is turned offTurn it on, or cancel the runs

Next steps

Related docs

Last updated September 15, 2026