Retries, Test Calls and Run Again

How Edesy voice campaigns retry calls the network refuses (1, 3, 10, 20 and 30 minutes, not counted against retry_attempts), auto pause and resume, the test-call endpoint, playing your own audio, and POST /v1/campaigns/{id}/duplicate to run a campaign again.

4 min read

A campaign has two kinds of retry. Your retry attempts (retry_attempts, retry_delay_sec) cover calls that rang but were not answered, or were busy. Network retries are automatic: when the network refuses a call before it can ring, Edesy calls the contact again later without using one of your attempts. This page covers both, the auto pause that protects your list during an outage, the test call, playing your own audio file, and running a finished campaign again.

Network retries#

Item Behaviour
Trigger The network refuses the call within seconds, before it rings, or answers that it is over capacity
Schedule About 1, 3, 10, 20 and 30 minutes after each refusal, with a small random spread
Limit 5 network retries per contact, then the contact ends as failed
Your retry_attempts Not used. A refused call gives the attempt back
Contact status while waiting retrying, with the next retry time in the contact's error text
Cost Free. A refused call never connects, so nothing is billed

A normal outcome such as no answer, busy or a rejected call is not a network failure. Those use your retry_attempts, spaced retry_delay_sec apart.

Auto pause and auto resume#

If 10 calls in a row are refused, the campaign stops dialing so it does not fail the whole list:

  1. If the campaign has a working backup caller ID, calls switch to it and the campaign keeps running.
  2. Otherwise the campaign pauses with a network pause reason.
  3. After 5 minutes it resumes by itself and tries again. Contacts keep their network-retry count, so a network that is still down ends them as failed instead of retrying forever.

Other pauses behave differently:

Pause reason Resumes automatically?
Network refusing calls Yes, after 5 minutes
Calling window closed Yes, when the window opens
Wallet balance ran out No. Top up, then POST/v1/campaigns/{id}/resume
You paused it No. POST/v1/campaigns/{id}/resume

Test call#

curl -X POST https://voice-api.edesy.in/v1/campaigns/{id}/test-call \
  -H "Authorization: Bearer $EDESY_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "phone_number": "+9198XXXXXXXX" }'
  • One call from the campaign's caller ID that plays exactly what a contact will hear. In the portal this is the Call me button on the review step.
  • It does not touch the campaign's contacts, results or concurrency.
  • It is billed like any other outbound call.
  • Limits: one test call per campaign at a time (a double click is ignored), and 20 test calls an hour per workspace. Over the limit returns 429.
  • Agent-dialer campaigns have no message to play, so they have no test call. An empty wallet returns 402.

Play your own audio file#

Set audio_type: "audio" and upload a WAV or MP3 with POST/v1/campaigns/{id}/audio (see Create a Campaign). A recording has no text-to-speech charge: you pay only the Rs 0.70 per minute campaign rate.

For a single call rather than a campaign, POST/v1/calls accepts audio_url, an https:// link to an MP3 or WAV file. The file is played when the callee answers, then the call ends, with no text-to-speech charge. audio_url must be https://; plain http:// links are rejected. It cannot be combined with text, url, voiceml, stream_url or application_id.

curl -X POST https://voice-api.edesy.in/v1/calls \
  -H "Authorization: Bearer $EDESY_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "from": "+9180XXXXXXXX", "to": "+9198XXXXXXXX", "audio_url": "https://cdn.example.com/notice.mp3" }'

Run again#

curl -X POST https://voice-api.edesy.in/v1/campaigns/{id}/duplicate \
  -H "Authorization: Bearer $EDESY_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "audience": "unreached" }'
audience Contacts in the copy
all (default) Every contact again
unreached Only contacts not reached last time: unanswered, busy, failed or never dialed
none No contacts. Upload a new list to the copy
  • The copy is a new campaign in created status, named with a (rerun) suffix. It keeps the settings and the message, so you don't upload the audio again. Start it with POST/v1/campaigns/{id}/start.
  • Contacts are screened against your DNC list again, so numbers added since the first run are suppressed.
  • The original keeps its own results and export.
  • The backup caller ID is carried over only if it is still in your workspace. If the main caller ID has been released, the request fails with 400.
  • Payment-reminder campaigns cannot be run again yet.

FAQ#

Do network retries use up my retry attempts?#

No. Network retries are counted separately, up to 5 per contact. retry_attempts is only for unanswered and busy calls.

Why did my campaign pause by itself?#

10 calls in a row were refused and there was no working backup caller ID. It resumes after 5 minutes.

Is a refused call billed?#

No. Only answered calls are billed.

Does the test call change my campaign's numbers?#

No. It is not a contact, so it never appears in the campaign's stats or results CSV.

Can I run a campaign again with a different message?#

Run again keeps the message. To change it, create a new campaign.

Was this page helpful?