Scheduling and concurrency

A campaign that dials its whole list at once will not end well. Two settings control the pace: when it starts, and how many calls it is allowed to hold open at a time.

Start time

A campaign carries a single scheduled start time, in UTC. Leave it empty and the campaign is treated as start-immediately. Recurring time-of-day calling windows are not available, if you need to keep dialling inside business hours, schedule the start and pause the campaign yourself.

Concurrency

Reserved concurrency is the number of simultaneous calls the campaign may hold. It defaults to 1, and the maximum accepted value is 1000. Your plan also caps how many sessions your whole organization can run at once, and that cap wins over anything a single campaign asks for.

Retries

Retries are off by default. Turn them on and set a maximum retry count of up to 10, plus how a retried row is rescheduled. There is no separate per-attempt backoff to configure.

Fallback channel

A campaign can name one fallback channel, and it must differ from the primary channel. This is a single alternative, not a multi-step cascade, and there is no SMS channel.

create-campaign.sh
curl -X POST https://api.saaya.ai/api/v1/campaigns \
  -H "X-API-Key: sa_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "April refund follow-up",
    "agent_id": "…",
    "primary_channel": "call",
    "from_number": "+14155550123",
    "reserved_concurrency": 10,
    "scheduled_at": "2026-04-27T03:30:00Z",
    "retry": { "enabled": true, "max_retry_count": 2 }
  }'

Lifecycle

A campaign is created as a draft, then published, then started. Once running it can be paused and resumed, or cancelled outright. Pausing stops new rows being dispatched; calls already in flight are not cut off.

lifecycle.sh
curl -X POST https://api.saaya.ai/api/v1/campaigns/{id}/publish -H "X-API-Key: sa_..."
curl -X POST https://api.saaya.ai/api/v1/campaigns/{id}/start   -H "X-API-Key: sa_..."
curl -X POST https://api.saaya.ai/api/v1/campaigns/{id}/pause   -H "X-API-Key: sa_..."
curl -X POST https://api.saaya.ai/api/v1/campaigns/{id}/resume  -H "X-API-Key: sa_..."
curl -X POST https://api.saaya.ai/api/v1/campaigns/{id}/cancel  -H "X-API-Key: sa_..."
Was this page helpful?