Skip to main content

Overview

Testing outbound calls involves two main steps:
  1. Getting the list of evaluators with phone numbers
  2. Running the selected evaluators for outbound testing
Phone number regional coverage: Cekura provides testing phone numbers in a limited set of regions. If you need a receiving number in a region Cekura doesn’t cover (for example, an Indian +91 number), you can import your own number from Plivo or Twilio. Imported numbers work identically to Cekura-provisioned numbers for inbound and outbound testing — your system calls the imported number and Cekura’s testing agent answers.

Prerequisites

  • Outbound mode enabled: Agent’s inbound must be set to false
  • Agent contact_number set to your outbound caller ID: Cekura validates the caller ID (ANI) of every incoming outbound-test call against the agent’s contact_number field. If your agent dials from +15551234567, the agent’s contact_number must be exactly +15551234567 in E.164 format. Set this in Agent settings or via the Update Agent API.
  • Evaluators ready: Created evaluators with valid phone numbers
Caller ID mismatch causes silent rejects. If the contact_number on your agent is empty or doesn’t match the number your agent dials from, Cekura drops the incoming call without returning a SIP error your telephony provider can surface. The symptom on the provider side (Twilio, Telnyx, etc.) is Busy, NoAnswer, or a generic failed dial — no audio, no answer, no descriptive error. Confirm contact_number matches your actual outbound caller ID before debugging anything further downstream.

Getting Evaluators and Phone Numbers

To retrieve the available evaluators and their associated phone numbers:
  1. Use the List Evaluators API endpoint
  2. The response will include both evaluators and their corresponding phone numbers for testing

API Reference

Check out the List Evaluators API documentation

Example Code Running Outbound Call

Example Response Structure

Running Outbound Call Tests

Once you have your list of evaluators and phone numbers:
  1. Select which evaluators you want to run
  2. Execute the evaluators using the Running Evaluators API
  3. The system will automatically make outbound calls to the phone numbers associated with the selected evaluators
  4. Monitor the test results through the dashboard

API Reference

Learn more about the Running Evaluators API
Dial window timing: Each outbound run has a dial window that opens when the run reaches pending status. Your agent must dial the outbound_number before outbound_dial_window_closes_at (default 300 seconds after the window opens). Dials received after the deadline are dropped and the run returns status: timeout. The three dial-window fields (outbound_dial_window_opens_at, outbound_dial_window_seconds, outbound_dial_window_closes_at) are included in run responses so you can track the deadline.

Troubleshooting

Cekura rejects incoming outbound-test calls whose caller ID doesn’t match a configured contact_number on any agent in your project. Open the agent under test and confirm its contact_number is set to the exact E.164 number your agent dials from. An empty or mismatched contact_number causes every outbound attempt to be silently dropped — the symptom on your provider side is Busy / NoAnswer / no-pickup, with no audio and no SIP error explaining why. After setting the correct contact_number, trigger a new run; existing runs that hit this state will remain in timeout and cannot be recovered.
A timeout with duration: 0 and an empty transcript means the call never connected to Cekura. Work through these in order:
  1. Dialed too late — if your agent dialed after outbound_dial_window_closes_at (check the run response for this field; default is 300 seconds after the run reached pending), Cekura dropped the call. Dial promptly when a run reaches pending status.
  2. Caller-ID match — see the entry above; this is a common cause.
  3. Dial actually happened — check your telephony provider’s logs to confirm the outbound call was placed.
  4. Destination number — confirm the number your agent dialed matches the outbound_number returned for that run in the bulk runs API response.
When you trigger N outbound runs but your project’s parallel call limit is M (where M < N), Cekura returns phone numbers for all N runs upfront. Runs beyond the concurrent limit are queued — they remain in a non-ready state until a concurrent slot opens, at which point they transition to pending status. Do not dial a number before its run reaches pending; the call will not be matched.The monitor_runs polling loop in the example code above handles this automatically: it polls all run IDs and calls only when a run’s status is "pending".To configure your project’s parallel call limit, see Managing concurrent evaluator runs in the FAQ.