https://retellai.com/?utm_source=discord&utm_medium=seo logo
Any endpoint to test call and webhook
# ❓・ai-evy-support
m
@AI Evy Any endpoint to test call and webhook? I have a utiity whic runs over and delays call but sometimes that utolity is down i want to see if i can add any check/test point to that utility and monitor that'
a
Thanks for tagging me @MehXBot. I'll look through relevant sources and get back to you shortly.
### Answer Retell AI doesn't have a dedicated health check or test endpoint specifically documented in the official sources. However, you can implement monitoring using these approaches: For Testing Webhooks: You can test your webhook endpoint locally before deploying [(1) ]() . The setup guide shows you can use tools like Postman or CURL to send test webhook payloads to your endpoint :
Copy code
bash
curl --location 'localhost:8080/webhook' \
--header 'Content-Type: application/json' \
--data '{
 "event": "call_ended",
 "call": {
 "call_type": "phone_call",
 "from_number": "+12137771234",
 "to_number": "+12137771235",
 "direction": "inbound",
 "call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
 "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
 "call_status": "registered",
 "metadata": {},
 "retell_llm_dynamic_variables": {
 "customer_name": "John Doe"
 },
 "start_timestamp": 1714608475945,
 "end_timestamp": 1714608491736,
 "disconnection_reason": "user_hangup",
 "transcript": "...",
 "opt_out_sensitive_data_storage": false
 }
}'
For Monitoring Calls: You can register a phone call and monitor its status using the Register Phone Call API [(2) ]() and then retrieve call details with the Get Call API [(3) ]() . The
call_status
field will show you if calls are working (
registered
,
ongoing
,
ended
, or
error
) [(3) ]() [(2) ]() . Webhook Reliability: Retell's webhooks have a 10-second timeout and will retry up to 3 times if they don't receive a success status (2xx) [(4) ]() . Webhooks are triggered in order but are non-blocking . For comprehensive monitoring, you could create a test call periodically and check if your webhook receives the expected events (
call_started
,
call_ended
,
call_analyzed
) .
​ To learn more, see the sources I considered: [[1] Setup guide](https://docs.retellai.com/features/register-webhook) [[2] Register Phone Call](https://docs.retellai.com/api-references/register-phone-call) [[3] Get Call](https://docs.retellai.com/api-references/get-call) [[4] Webhook Overview](https://docs.retellai.com/features/webhook-overview) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
m
@AI Evy there are no charges if the call deos not get answered right?
a
Thanks for the follow-up, @MehXBot. I'll get back to you soon.
### Answer According to a Discord discussion, Retell's billing policies charge 10 seconds for calls that are not connected [(1) ]() . The exact cost depends on your agent settings and whatever the LLM of your agent costs per 10 seconds . If you're using SIP trunking, you would be charged the platform + LLM fee for the 10 seconds, but not the telephony fee . For the most accurate and up-to-date billing information, I recommend checking your Retell dashboard or contacting Retell support directly, as billing policies may have been updated since this discussion.
​ To learn more, see the sources I considered: [[1] Discord message from @sxnvddxct on 2025-03-07](https://discord.com/channels/1186424376300679209/1186462578310910112/1347375210135027836) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
m
@AI Evy How do we figure out if the call is in voicemail i am getting no fied named as in
a
Thanks for the follow-up, @MehXBot. I'll get back to you soon.
### Answer To determine if a call reached voicemail, check the
call_analysis
object in the call response. Specifically, look for the
in_voicemail
field [(1) ]() . Here's the structure:
Copy code
json
"call_analysis": {
  "call_summary": "The agent called the user to ask question about his purchase inquiry...",
  "in_voicemail": false,
  "user_sentiment": "Positive",
  "call_successful": true,
  "custom_analysis_data": {}
}
The
in_voicemail
boolean field indicates whether the call reached a voicemail . This field is available in the call analysis data after the call ends . Additionally, you can check the
disconnection_reason
field - if it equals
"voicemail_reached"
, that also indicates the call went to voicemail . The call analysis becomes available after you receive the
call_analyzed
webhook event .
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
​ To learn more, see the sources I considered: [[1] Update Call](https://docs.retellai.com/api-references/update-call) ​
m
@AI Evy I aint geting call analysed in some cases why is that
a
Thanks for the follow-up, @MehXBot. I'll get back to you soon.
### Answer Based on the documentation, Retell AI will not populate custom post-call analysis fields for calls that were not connected or where no conversation took place [(1) ]() . You should check whether the
call_analysis
field exists before using it . Common reasons you might not receive call analysis: 1. Call didn't connect - If the call has a disconnection reason like
dial_failed
,
dial_no_answer
, or
dial_busy
, the
call_started
webhook won't be triggered, though
call_ended
and
call_analyzed
webhooks will still fire [(2) ]() . 2. No conversation occurred - If there was no actual conversation during the call, the analysis fields won't be populated [(1) ]() . 3. Webhook configuration - Make sure your webhook is configured to receive the
call_analyzed
event. The default webhook events for voice agents are
call_started
,
call_ended
, and
call_analyzed
[(2) ]() . You can filter which events are delivered using the
webhook_events
field when creating or updating an agent . How to access call analysis when available: You can retrieve analysis results through three methods [(1) ]() : - Dashboard - View in the history tab under "Conversation Analysis" column - Webhook - Receive real-time notifications when the
call_analyzed
event fires [(1) ]() [(2) ]() - API - Use the Get Call API to retrieve the
call_analysis
field programmatically [(1) ](
mption) [(3) ]() The
call_analysis
object contains fields like
call_summary
,
in_voicemail
,
user_sentiment
,
call_successful
, and
custom_analysis_data
[(3) ]() . If you're still not receiving analysis for calls that should have it, verify that your webhook endpoint is correctly configured and returning a success status (2xx) within the 10-second timeout [(2) ]() .
​ To learn more, see the sources I considered: [[1] Consume the analysis data](https://docs.retellai.com/features/post-call-analysis-consumption) [[2] Webhook Overview](https://docs.retellai.com/features/webhook-overview) [[3] Get Call](https://docs.retellai.com/api-references/get-call) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
m
@AI Evy How do i test webhook?
a
Thanks for the follow-up, @MehXBot. I'll get back to you soon.
### Answer To test your webhook endpoint, you can test it locally before deploying [(1) ]() . Test with CURL: Use this command to send a test webhook payload to your endpoint :
Copy code
bash
curl --location 'localhost:8080/webhook' \
--header 'Content-Type: application/json' \
--data '{
 "event": "call_ended",
 "call": {
 "call_type": "phone_call",
 "from_number": "+12137771234",
 "to_number": "+12137771235",
 "direction": "inbound",
 "call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
 "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
 "call_status": "registered",
 "metadata": {},
 "retell_llm_dynamic_variables": {
 "customer_name": "John Doe"
 },
 "start_timestamp": 1714608475945,
 "end_timestamp": 1714608491736,
 "disconnection_reason": "user_hangup",
 "transcript": "...",
 "opt_out_sensitive_data_storage": false
 }
}'
Test with Postman: You can also use Postman to send the same JSON payload to your local endpoint . Make your endpoint online: Once local testing works, deploy your endpoint using Ngrok to make it accessible online : 1. Install ngrok:
brew install ngrok/ngrok/ngrok
2. Start ngrok: `ngrok http 3. Use the generated URL (e.g., ` as your webhook endpoint Live testing: After registering your webhook endpoint, start a web call in the dashboard to verify the webhook is triggered correctly .
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.
​ To learn more, see the sources I considered: [[1] Setup guide](https://docs.retellai.com/features/register-webhook) ​
m
@AI Evy There is weird screech when the call is picked up by some assistant for call transfer and then it is transferred to respected person, when the assistant asks ai to hold it does not holdeven tho the end user is not on line
a
Thanks for the follow-up, @MehXBot. I'll get back to you soon.
### Answer The screeching sound and hold behavior issues you're experiencing during call transfers are likely related to your transfer configuration. Here's what you should check: For the screeching sound: When using warm transfer, configure the on-hold music setting properly [(1) ]() [(2) ]() . The default is a standard ringtone, but you have several options including Ringtone, Relaxing Sound, Uplifting Beats, or No Music [(3) ]() . The screech might be caused by audio feedback or improper hold music configuration during the transfer handoff. For the hold behavior issue: The AI agent doesn't automatically "hold" during transfers in the way you might expect [(2) ]() . When the call transfer node executes, the agent will not speak while in this node . If you want the agent to say something like "Let me transfer you right away" before performing the actual transfer, you need to put a conversation node (with
skip response
turned on) before the transfer node . Key transfer settings to configure: 1. Enable human detection - This ensures the agent checks if a human is present after the transfer target answers [(1) ]() [(2) ]() 2. Auto-greet - If enabled, the agent will immediately say "Hello" when the transfer target picks up, which encourages a response and increases the likelihood of detecting a human 3. Whisper message - A message spoken privately to the transfer target before connecting them to the original caller
4. Agent detection timeout - The maximum time the AI agent will wait to determine whether the transfer target is a human For warm transfers specifically, the original caller hears the configured on-hold music while the transfer is being processed [(2) ]() [(3) ]() . Make sure your warm transfer settings are properly configured to avoid audio issues during the handoff.
​ To learn more, see the sources I considered: [[1] Transfer call](https://docs.retellai.com/build/single-multi-prompt/transfer-call) [[2] Call Transfer Node](https://docs.retellai.com/build/conversation-flow/call-transfer-node) [[3] Warm Transfer vs Cold Transfer - The AI Advantage in Call Centers | Retell AI](https://www.retellai.com/blog/effortless-handoffs-with-retell-ais-warm-transfer-feature) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.