Skip to main content
POST
/
api
/
programs
Create a new program
curl --request POST \
  --url http://localhost:3000/api/programs \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "flowId": "<string>",
  "startAt": "2025-12-20T09:00:00Z",
  "didPool": [
    "123e4567-e89b-12d3-a456-426614174000",
    "123e4567-e89b-12d3-a456-426614174001"
  ],
  "retryStrategy": {
    "type": "none",
    "delayMinutes": 123,
    "maxRetries": 123,
    "retryDates": [
      "<string>"
    ]
  },
  "mode": "batch",
  "audienceId": "<string>",
  "stopAt": "2025-12-20T18:00:00Z",
  "pauseWindows": {
    "sunday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "monday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "tuesday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "wednesday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "thursday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "friday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "saturday": [
      {
        "startAt": {
          "hour": 12,
          "minute": 0
        },
        "endAt": {
          "hour": 12,
          "minute": 0
        }
      }
    ],
    "advanced": [
      {
        "startAt": "2025-12-25T00:00:00Z",
        "endAt": "2025-12-25T23:59:59Z"
      }
    ]
  },
  "autoPauseRules": [
    {
      "nodeId": "node_abc123",
      "threshold": 100,
      "resetOnResume": true
    }
  ]
}
'
{
  "id": "<string>",
  "name": "<string>",
  "mode": "batch",
  "organizationId": "<string>",
  "audienceId": "<string>",
  "flowId": "<string>",
  "status": "draft",
  "startAt": "<string>",
  "didPool": [
    {
      "id": "<string>",
      "number": "+212500000001",
      "country": "MA"
    }
  ],
  "retryStrategy": {},
  "createdAt": "<string>",
  "updatedAt": "<string>",
  "stopAt": "<string>",
  "pauseWindows": {},
  "autoPauseRules": {}
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
name
string
required

Program name

flowId
string
required

Flow ID to execute

startAt
string
required

Scheduled start time (ISO 8601)

Example:

"2025-12-20T09:00:00Z"

didPool
string[]
required

Pool of DID UUIDs to use for outbound calls (at least one)

Example:
[
"123e4567-e89b-12d3-a456-426614174000",
"123e4567-e89b-12d3-a456-426614174001"
]
retryStrategy
object
required

Retry strategy for failed calls

mode
enum<string>
default:batch

Program mode: batch (static audience) or live (trigger-based)

Available options:
batch,
live
audienceId
string

Audience ID to call (required for batch mode)

triggerCondition
object

Trigger condition (required for live mode)

stopAt
string

Scheduled stop time (ISO 8601)

Example:

"2025-12-20T18:00:00Z"

pauseWindows
object
autoPauseRules
object[]

Auto-pause rules: pause execution when counters reach thresholds

Response

Program created

id
string
required

Program ID

name
string
required

Program name

mode
enum<string>
required

Program mode

Available options:
batch,
live
organizationId
string
required

Organization ID

audienceId
string
required

Audience ID. Set at creation for batch, auto-created for live.

flowId
string
required

Flow ID

status
enum<string>
required

Program lifecycle status. Operational status is on executions.

Available options:
draft,
active,
archived
startAt
string
required

Scheduled start time

didPool
object[]
required

Resolved DID pool

retryStrategy
object
required

Retry strategy

createdAt
string
required

Created at

updatedAt
string
required

Updated at

triggerCondition
object

Trigger condition (live mode only)

stopAt
string | null

Scheduled stop time

pauseWindows
object

Pause windows

autoPauseRules
object

Auto-pause rules