Skip to main content
Manage programs (calling campaign templates) and their executions. Base paths:
  • /programs - Program management
  • /program-executions - Execution management

Types


Program Endpoints

Create a new program

Example (batch mode — default):
Example (live mode):
Error Responses: Mode-specific validation:
  • mode: 'batch' (default) — audienceId required, triggerCondition must not be set
  • mode: 'live'triggerCondition required, audienceId optional (auto-created if not provided)
  • triggerCondition.attributeName must reference an existing date-type custom attribute in the org

List all programs


Get program details

Error Responses:

Update a program

Error Responses:

Delete a program

Error Responses:

Launch a new execution of the program

Batch mode: Snapshots the audience and starts calling contacts immediately. Live mode: The output audience was auto-created when the program was created. Launch pre-computes triggers for all org contacts with the matching attribute and starts the trigger evaluation cron. Contacts are called as their triggers become due.
Error Responses:

List all executions for a program

Error Responses:

List contact triggers for a live program

Error Responses:

Program Execution Endpoints

List all active executions


Get execution details

Error Responses:

Pause a running execution

Notes:
  • Already-queued calls will continue to completion
  • New contacts will not be pulled until resumed
  • Only valid for executions in running status
Error Responses:

Resume a paused execution

Optional Request Body:
Notes:
  • Valid for executions in paused, paused_no_credits, or paused_threshold status
  • When resuming from paused_threshold, counters with resetOnResume: true are reset to zero
  • If autoPauseRules is provided in the body, the execution’s rules are updated before resuming
Error Responses:

Cancel an execution

Notes:
  • Remaining pending contacts are marked as skipped
  • Already-queued calls will continue to completion
  • Sets execution status to cancelled
Error Responses:

Notes

Retry Strategy Examples

No retries:
Fixed delay retries:
  • Retries failed calls after 30 minutes
  • Maximum 3 retries (4 total attempts)
Scheduled retries:
  • Retries at specific dates/times
  • Number of entries = number of retry attempts

Pause Windows

Pause windows define time ranges when calls should NOT be made. The orchestrator respects these windows and skips pulling contacts during paused periods. Weekly pause (lunch break):
Specific date range (holiday):

Execution Lifecycle

Progress Counters

  • totalContacts: Snapshot of audience size at launch (batch), or incremented as triggers fire (live)
  • contactsCompleted: Successfully answered calls
  • contactsFailed: Exhausted all retries
  • contactsPending: Waiting to be called (includes pending_retry)
  • contactsInProgress: Currently queued or in-call
Invariant: totalContacts = contactsCompleted + contactsFailed + contactsPending + contactsInProgress Live mode note: totalContacts starts at 0 and grows as triggers become due. The execution never auto-completes — it runs until manually stopped or stopAt is reached.

Auto-Pause Rules

Auto-pause rules allow automatic pausing of an execution when a node has been executed a certain number of times across all calls. Counters are execution-scoped, Redis-backed, and atomic. How it works:
  1. Define autoPauseRules on the program (snapshotted to execution at launch)
  2. Each rule specifies a nodeId and a threshold — every time that node executes in any call, the counter increments implicitly
  3. When a counter reaches its threshold, the execution is automatically paused with status paused_threshold
  4. Resume via PATCH /program-executions/:id/resume — counters with resetOnResume: true are reset to zero. Optionally pass updated autoPauseRules in the request body.
  • Multiple rules are supported; any single rule reaching its threshold triggers the pause
  • Counting is implicit: no flow changes needed — just specify the node ID in the rules
  • Counter state is cleaned up when executions reach terminal states (completed, stopped, cancelled)