Click Start on the campaign page, or call POST/v1/collect/campaigns/:id/start. Collect checks KYC, debtors, the message, the caller ID and your wallet, then begins calling each debtor at their scheduled time. The campaign keeps running until every debtor is paid, stopped or out of attempts, then it completes on its own.
Checks before the first call#
| Check | Error if it fails |
|---|---|
| KYC approved | 403 KYC_NOT_APPROVED |
| At least one debtor uploaded | campaign has no contacts |
| A message saved | campaign has no TTS text configured or campaign has no audio file uploaded |
| Fixed caller ID can be routed (only when no pool is set) | Caller ID not routable |
| Wallet can fund calls | Balance error with the required and current balance |
Start#
curl -X POST https://voice-api.edesy.in/v1/collect/campaigns/CAMPAIGN_ID/start \
-H "Authorization: Bearer sk_your_api_key"
{ "status": "ok" }
While it runs#
- Collect checks for debtors who are due about every 30 seconds and dials them, up to the campaign's concurrency (5 at a time by default).
- With a number pool, each attempt picks the next caller ID by the pool's rotation. Without one, every call uses the campaign's
from_number. - If the wallet cannot fund calls, dialling waits until you top up.
- The contacts table in the portal refreshes on its own and shows attempts, the due amount and date, and the payment status.
Campaign statuses#
| Status | Meaning |
|---|---|
created |
Not started yet |
running |
Calling debtors on their schedule |
paused |
Paused; no new calls |
stopped |
Stopped by you |
completed |
No debtor has any attempt left |
Contact statuses#
Each debtor has a call status and a separate payment status. The payment status (pending, promised, paid, stopped) decides whether Collect keeps calling. Call statuses include pending, dialing, completed, no-answer, busy, failed and suppressed (on your DNC list, never dialled). A debtor shows failed when every number in the pool has already been used for them.
Track progress by payment status. A debtor who answered but has not paid stays in the ladder unless stop_on_connect is on.
Pause, resume or stop#
The Collect portal has a Start button. To pause, resume or stop a running campaign, use the shared campaign endpoints with the same API key:
curl -X POST https://voice-api.edesy.in/v1/campaigns/CAMPAIGN_ID/pause -H "Authorization: Bearer sk_your_api_key"
curl -X POST https://voice-api.edesy.in/v1/campaigns/CAMPAIGN_ID/resume -H "Authorization: Bearer sk_your_api_key"
curl -X POST https://voice-api.edesy.in/v1/campaigns/CAMPAIGN_ID/stop -H "Authorization: Bearer sk_your_api_key"
To stop calling one debtor, mark them stopped. See Mark Paid, Promised or Stopped.
FAQ#
Why has nobody been called yet? If you started outside calling hours, the first calls go out at the next window open (09:00 IST by default).
Does a running campaign pick up debtors I add later? Yes, while it is still running. They are scheduled from the next window open and dialled when due. A campaign completes once no debtor has attempts left, so for a fresh batch after that, create a new campaign.
Why is a debtor marked failed? Usually because every active number in the pool has already been used for that debtor. To avoid this for later debtors, add numbers to the pool or set the total attempts no higher than the number of active pool numbers.