DocsOpen Workflows

Concepts

Waits and questions

A wait is a pause for something the run cannot produce itself: a person’s answer, another system’s signal, or a moment in time. The turn keeps its place until the wait is answered.

  1. StepA step asksWait or a model’s call
  2. WaitThe turn waitsState: Waiting
  3. AnswerThe answer arrivesChecked against its schema
  4. StepThe step continuesWith the answer as its result
Waiting costs nothing: time spent waiting is not counted against a turn’s Duration, and the run survives restarts while it waits.

Registered waits

WaitAnswered byAnswer
Clarificationintervention
A person
Text, or { "Declined": true, "Reason": "…" } to say no
UserLocationRequiredintervention
A person
Text naming where they are
Signalsignal
Another system
Any JSON
Scheduleschedule
The engine’s clock
{ "status": "due" } at the moment the model named

A decline is an answer like any other: the step receives it and the workflow decides what to do with it.

What raises a wait

  • A Wait step. The step puts the question you wrote to a person through a declared wait.
  • A model step. A ModelCall that lists a wait in its Operations may call it and write the question itself. Clarification is offered to every model step whose output admits calls without being listed; every other wait reaches a model step only where it is listed.
  • An exhausted step. A step with OnExhausted: Wait raises Clarification when its attempts or budget run out, saying what ran out and how much was spent.

Declaring a wait

A wait a step names is declared in Operations under Wait, and the binding’s name is the registration’s name. An upload naming a wait that is not registered is refused.

Operations:
  - Wait: Clarification
    Locator: embedded://momor.ai/services/tools/clarification

Answering

A raised wait appears on the run’s event stream as wait.<class>.raised, for example wait.intervention.raised, carrying its waitId, the question and the schema the answer must match. Answer it with POST /workflow/runs/{runId}/waits/{waitId}. When a step is waiting on several things at once, it continues only once every one of them is answered.

Who can answerWaits are answered through the run’s API by the run’s owner: the signed-in person or the API key that started it. Momor does not send the question anywhere else yet, so a system that starts runs for other people delivers the question to them and posts their answer.

While a turn waits

  • New requests. A request arriving at the run follows the workflow’s Mode, exactly as if the turn were running.
  • Cancelling. Cancelling the turn ends its waits. A late answer is refused with 410.
  • Advisories. A model can also raise an advisory: a notice for the person that does not stop the run, recorded as advisory.raised.
Updated Nov 1, 2026
Esc