# Create Plant
Source: https://docs.verloop.io/api-v1/endpoint/create
POST /plants
Creates a new plant in the store
# Delete Plant
Source: https://docs.verloop.io/api-v1/endpoint/delete
DELETE /plants/{id}
Deletes a single plant based on the ID supplied
# Get Plants
Source: https://docs.verloop.io/api-v1/endpoint/get
GET /plants
Returns all plants from the system that the user has access to
# Introduction
Source: https://docs.verloop.io/api-v1/introduction
Verloop Voice AI Agent APIs for Outreach and consumption.
API document is a work in progress. We are working on this section and will be updated soon.
# Accurate Voice Insights
Source: https://docs.verloop.io/best-practices/accurate-voice-agent-insights
Optimization tips for high-accuracy Voice AI Insights.
## Optimization Guide
To get the most accurate results from your Voice Agents, follow these prompt engineering best practices.
## Dos and Don'ts
The "Description" field is effectively a prompt for the LLM.
* **Bad:** "Check interest."
* **Good:** "Did the user explicitly state they want to buy the insurance policy? Mark as `True` only if they said 'Yes' or 'Agree'."
When using **Enum** (Select from List), ensure your options cover all scenarios.
* **Recommended:** Always include an option like `"Unclear"` or `"Other"` so the AI isn't forced to make a wrong guess if the user was vague.
Keep descriptions under **300 characters**. If you need complex logic, split it into two separate parameters (e.g., one for "Interest" and one for "Reason").
## Handling Latency
Analysis is evoked immediately but takes time to process.
* **Expectation:** Data is usually ready within seconds but may take up to 5 minutes post-call.
* **Workflow:** Do not block your immediate post-call logic (like sending an SMS) on the analysis result. Use the **Webhook** to trigger a separate follow-up flow once the data arrives.
## Regional Nuances
For **Voice AI Agents for Arabic** or Indian regions, the transcription might contain mixed languages.
* **Tip:** If you are analyzing a **Hinglish** call, you don't need to translate the description into Hindi. The AI understands the context of the transcript even if the prompt is in English.
* **Tip:** For **Arabic**, ensure your description asks for the *intent* rather than looking for specific keywords, as dialects (Khaleeji vs. Levantine) use different words for the same action.
# Testing Best Practices
Source: https://docs.verloop.io/best-practices/detailed-guide-testing-voice-agents
A master guide to ensuring your Voice AI Agents are production-ready and error-free.
# End-to-End Testing Strategy
Deploying a **Voice AI Agent** is different from deploying a Chat Agent. You aren't just limited to testing logic but testing acoustics, latency, and patience. A script that reads well on screen might sound robotic, too long or rushed over the phone.
This guide outlines the **Golden Path** for testing—from the first draft to post-production updates—ensuring your **Native English Voice Agent**, **Voice Agents for Indian Languages**, **Arabic Accent AI Agents** and Voice Agents in 80+ other languages perform flawlessly.
***
## Phase 1: The Build Phase (New Agents)
When building an agent from scratch, your goal is to validate **Logic** before **Voice**.
**Tool:** [Chat Simulator](/test-voice-agent/manual-chat)
Before worrying about accents, ensure the **AI Agent** follows your rules.
* **Happy Path:** Test the ideal customer journey (e.g., User says "Yes" -> Agent books appointment).
* **Unhappy Path:** Test rejection (e.g., User says "No, I'm busy" -> Agent handles objection or hangs up).
* **Context Check:** Use the **Debug Mode** to ensure variables like `user.name` or `lead_status` are being captured correctly from the start.
**Tool:** [Web Call Testing](/test-voice-agent/web-call)
Once the logic holds, test how it sounds without spending money on telephony credits.
* **Speed & Tone:** Does the agent speak too fast? Is the selected voice (e.g., *Riya* or *Aditya*) too formal for a sales call?
* **Dialect Verification:**
* **For Arabic:** Speak in a specific dialect (e.g., *Khaleeji*). Does the agent understand? If not, add **Boosted Keywords**.
* **For Hinglish:** Speak a mixed sentence like *"Mera loan application approve hua kya?"*. Verify the transcription in the live chat log.
**Tool:** [Word Management](/build/configure-voices/add-pronunciation)
If the agent mispronounces your brand name during the Web Call:
1. Go to **Word Management**.
2. Add the phonetic spelling.
3. **Retest immediately** via Web Call to verify the fix.
Only add words that are critical. Overloading this list adds latency.
***
## Phase 2: The Staging Phase (Pre-Production)
Before you assign this Recipe to your main business number, you must test against **Real World Friction**.
### 1. The "Background Noise" Test
**Method:** Call the agent using the [Real Phone Call](/test-voice-agent/phone-call) method while standing in a noisy environment (or play cafe noise in the background).
* **Goal:** Test **Interruption Sensitivity**.
* **Fix:** If the agent stops talking every time a car honks, lower the sensitivity in your Global Settings.
### 2. The "Latency" Test
**Method:** Call from a mobile network (4G/5G), not Wi-Fi.
* **Goal:** Feel the delay.
* **Benchmark:** \* **Good:** \< 1 seconds response time.
* **Bad:** > 3 seconds.
* **Fix:** If latency is high, shorten your **System Prompt** or remove unnecessary complex logic blocks at the start of the flow.
### 3. The "Silence" Test
**Method:** Stay silent when the agent asks a question.
* **Goal:** Verify the **End Call on Silence** triggers correctly (e.g., after 1 minute) or that the agent prompts you again ("Are you still there?").
***
## Phase 3: Making Edits (Regression Testing)
When you need to update an existing live agent (e.g., changing the pricing or adding a new holiday greeting), follow this strict protocol to avoid breaking production.
Never edit the live Recipe directly. **Clone** the Recipe, make your changes, and test on a temporary number or Web Call.
Test the *unchanged* parts of the flow. Did adding a new "Holiday" block accidentally break the "Transfer to Agent" logic?
Use **Web Call Custom Configuration** to inject variables. If your edit changes how "Premium Users" are handled, manually inject `account_type: premium` in the test setup to verify the new path.
Once validated, simply switch the **Phone Number** configuration to point to the new Recipe version. This ensures zero downtime.
***
## Production Monitoring Checklist
Even after deployment, your job isn't done. Use **Post-Call Analysis** to automate quality assurance.
**Daily:** Check **Post-Call Analysis** logs for "Unknown" intents. If users are asking for something you didn't account for, add a new path.
**Weekly:** Review **Speech Recognition** logs for low-confidence transcriptions. Add these terms to **Boosted Keywords**.
**Monthly:** Re-evaluate your **Voice Profile**. New, higher-quality voices (e.g., ElevenLabs Turbo) are frequently added to the library. Swapping to a newer model can instantly decrease latency.
***
## Summary: The Testing Pyramid
| Layer | Method | Focus | Frequency |
| :--------- | :------------------ | :--------------------------- | :------------------- |
| **Top** | **Real Phone Call** | Latency, Network, Noise | Final QA only |
| **Middle** | **Web Call** | Accents, ASR, Pronunciation | Weekly / Major Edits |
| **Base** | **Chat Simulator** | Logic, Prompts, Data Capture | Daily / Every Edit |
By adhering to this pyramid, you ensure that 90% of bugs are caught in the cheap, fast **Chat** layer, leaving the **Phone** layer for final polish of your **Voice AI Agents**.
# Mastering Dialects & Accents
Source: https://docs.verloop.io/best-practices/handling-dialects-and-accents
Configure your Voice Agent to handle global linguistic nuances, from Khaleeji Arabic to Hinglish and LATAM Spanish.
Effective speech recognition requires more than just identifying a language; it requires understanding how that language is spoken locally. A generic "Spanish" or "English" model often fails to capture the cultural context, slang, and code-switching that defines real human conversation.
This guide details how to configure your **Voice AI Agents** to master dialects across the globe.
***
## Middle East: Voice AI for Arabic Language
Arabic is a pluricentric language with significant differences between Modern Standard Arabic (MSA) and regional "Ammiya."
While both fall under the Gulf umbrella, you can use **Boosted Keywords** to prioritize specific phonemes or vocabulary unique to the UAE (**Emirati**) versus broader Gulf (**Khaleeji**) patterns. For instance, specific greeting styles or localized terms for "booking" can be boosted to ensure the **Voice Agents** recognizes the intent correctly.
North African (**Maghrebi**) dialects often integrate French loanwords and distinct phonetic shifts compared to **Levantine** (Lebanese/Syrian) Arabic. By setting the specific regional model and boosting French-Arabic hybrid terms, your agent maintains high **Contextual Accuracy**.
***
## India: Voice AI for Indian Languages
India’s linguistic landscape is characterized by frequent code-switching and rapid dialect shifts.
* **Hinglish:** It is rare for a modern conversation to be purely Hindi or purely English. **Voice Agents for India** must be configured to handle **Code-Switching**.
* **Recognition Accuracy:** Boosting keywords like "Aadhar," "OTP," or "Chahiye" helps the **Voice Agent** maintain high accuracy during mixed-language interactions.
* **Phonetic Sensitivity:** Tailoring the speech recognition profile ensures that regional pronunciations of English words (e.g., the difference in "v" and "w" sounds in certain regions) are correctly mapped to the intended intent.
***
## LATAM: Voice AI for Spanish & Portuguese
Latin America presents a diverse challenge where "Spanish" varies drastically from the US border down to Patagonia.
### Mexican vs. Rioplatense Spanish
The way a user says "You" changes the entire grammatical structure of a sentence.
* **Mexico & Colombia:** Predominantly use "Tú" or "Usted."
* **Argentina & Uruguay (Rioplatense):** Use "Vos" (voseo). Your **Smart AI** prompts must be instructed to understand and respond using "Vos" to sound authentic.
* **Caribbean Spanish:** Often features "S-aspiration" (dropping the 's' at the end of words). Use **Boosted Keywords** for common phrases that might sound truncated to a standard model.
### Brazilian Portuguese
Distinct from European Portuguese in rhythm, vowel openness, and vocabulary. When deploying **Voice AI Agents** for Brazil, ensure you select the `pt-BR` model rather than generic Portuguese to capture the unique "Ginga" and informality of Brazilian business interactions.
***
## Southeast Asia (SEA): Tonal Nuance & Mixed Tongues
SEA languages often rely on tone and heavy code-mixing with English.
Similar to Hinglish, **Taglish** mixes Tagalog and English. A sentence might start in English and end in Tagalog particles like "po" (for respect). Boost these particles to ensure the **LLM** detects the politeness level of the user.
In Singapore and Malaysia, English is often suffixed with particles like "lah," "meh," or "lor." While these carry no grammatical weight in standard English, they carry massive *emotional* weight. Training your **Smart AI** to recognize "Can lah" vs. "Can meh" changes the context from "Yes, sure" to "Are you skeptical?".
For tonal languages, context is king. Ensure your **Voice AI Agent** prompts are set to clarify ambiguity immediately if a tone is missed, preventing misunderstandings in booking dates or financial figures.
***
## Europe: Regional Specificity
Deploying **Voice AI Agents** in Europe requires navigating high-density dialect zones.
* **German (High German vs. Swiss German):** Standard German (Hochdeutsch) models often fail against Swiss German (Schwyzerdütsch). For Swiss deployments, strictly define the scope to Standard German or utilize specialized localized models if available, as the vocabulary differs significantly.
* **French (Metropolitan vs. Belgian/Swiss):** While mutually intelligible, numbering systems differ (e.g., "70" and "90"). Ensure your **Smart AI** knows that "Septante" (70) is valid input in Belgium/Switzerland, whereas "Soixante-dix" is expected in France.
***
## Global English: One Language, Many Voices
English is the global business language, but an American model may struggle with an Australian accent or Scottish burr.
| Accent | Optimization Strategy |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **US/Canada** | Focus on "General American" models. High tolerance for fast speech. |
| **UK/Ireland** | distinct variations (e.g., London vs. Glasgow). Boost specific local slang terms if operating regionally. |
| **Australian/NZ** | Enable models with vowel shifting awareness (e.g., "Day" sounding like "Die"). |
| **Indian English** | Use the specific `en-IN` model. Do not force US English models on Indian demographics, as proper noun recognition (Names, Cities) will degrade significantly. |
## Configuration Best Practices
To handle these variations effectively in your Recipe:
1. **Variable Prompts:** Use logic blocks to detect the user's region and swap the **System Prompt** of the **AI Agents**. (e.g., *"You are a helpful assistant speaking `Mexican` Spanish"* vs *"You are a helpful assistant speaking `Argentine` Spanish"*).
2. **Localized Fallbacks:** If the **Voice AI Agent** detects low confidence in transcription, trigger a fallback that asks the user to confirm using a universal format (e.g., *"Did you say 50? Say Yes to confirm."*).
3. **Dynamic Boosting:** Update **Boosted Keywords** based on the campaign region. A "Winter Sale" agent in Dubai needs different keywords than one in Riyadh.
# Add custom voice
Source: https://docs.verloop.io/build/configure-voices/add-custom-voice
# Adding Custom Voice
While Verloop offers an extensive library of curated voices, you can further personalize your Voice Agent by integrating new voices from our supported providers. This allows you to hand-pick specific personas for your AI Agents.
***
## Supported Voice Providers
We integrate with industry-leading Text-to-Speech (TTS) engines to ensure your **Voice AI Agents** have access to the most natural and emotive voices available:
* **Google** & **Azure**: Robust options for a wide variety of global languages.
* **Whisper** & **Deepgram**: High-performance engines optimized for speed and clarity.
* **ELEVENLABS** & **Cartesia**: Premium, lifelike voices ideal for high-end brand representation.
***
## How to Add a New Voice
Follow these steps to expand your speech library with custom profiles.
Navigate to **Settings > Voice > Speech Profiles** and click the **+ Add your speech** button in the top right corner.
In the "Add new speech" modal, provide the foundational details for your agent:
* **Speech name & Description:** Give your voice a recognizable name and a brief description of its intended use (e.g., "Customer Support - Arabic").
* **Language & Accent:** Specify the primary language and regional accent to optimize the Voice Agent's performance for local callers.
* **Gender & Tags:** Select the gender (Male or Female) and add searchable tags to help your team find the voice later.
Connect the profile to your preferred backend engine:
* **Provider:** Select from our list of supported providers like Azure, ElevenLabs, or Google.
* **Voice Name:** Enter the specific voice identifier provided by the TTS engine.
Use the **Play sample** button to audition the voice directly within the dashboard. Once you are satisfied that the tone matches your brand—whether it's a friendly **Hinglish** persona or a formal **Arabic Accent AI Agent**—click **Add speech**.
***
## Managing Your Integrated Voices
Once added, your custom voices will appear in the **All Speeches** list alongside our standard library.
* **Bookmark for Quick Access:** Use the **Star icon** to add your new custom voices to your favorites for easy selection in your Recipes.
* **Edit or Delete:** Custom-added voices feature **Edit (pencil)** and **Delete (trash)** icons, allowing you to update descriptions or remove outdated profiles as your brand evolves.
By integrating specialized voices, you ensure your AI Agents sound authentically yours, fostering higher trust and engagement with your callers.
# Add pronunciation
Source: https://docs.verloop.io/build/configure-voices/add-pronunciation
# Word Management & Pronunciation
Ensure your **Voice Agent** sounds like a local expert by fine-tuning how it pronounces brand names, industry jargon, or regional slang. **Word Management** allows you to define phonetic spellings to improve voice accuracy across all your **Voice AI Agents**.
This feature is especially powerful when building **Automated Phone Call Agents for Indian Languages** and **Arabic Voice Agents**, where specific names, currencies, or localized terms (like "Lakhs" or "Humein") require precise phonetic guidance to sound natural.
***
## Defining Custom Pronunciations
The Pronunciation library acts as a custom dictionary for your Voice Agents. By mapping a written word to its phonetic equivalent, you ensure the agent never trips over complex or non-standard terms.
### Common Use Cases
* **Currency & Units:** Ensure **Voice AI Agents for Indian Languages** correctly pronounce "INR" as "rupees" or "lacs" as "lakhs" instead of literal phonetic spellings.
* **Regional Nuances:** Map local terms like "Humein" to "Hamey" to ensure the Voice Agent captures the correct natural inflection.
* **Brand Names:** Teach your **Arabic Accent AI Agents** the exact way to say your company name if it follows a non-standard pronunciation.
***
## How to Add Pronunciations
Follow these steps to expand your agent's phonetic vocabulary.
Go to **Settings > Voice > Word Management** in your dashboard.
Click the **+ Add pronunciation** button to open the configuration modal.
In the "Add pronunciation" modal:
* **List of words:** Select the specific speech profiles these rules should apply to.
* **Enter word:** Type the word as it will appear in your Recipe scripts (e.g., "Karagiri").
* **Enter phonetic pronunciation:** Type how you want the word to sound (e.g., "Kaa-raa-gi-ri").
* **Case Sensitive:** Toggle this if the pronunciation only applies to specific casing (e.g., proper nouns vs. common words).
Click the **Play** icon to hear how the Voice Agent will pronounce the word. Once satisfied, click **Add pronunciation**.
## Important Guidelines
**Note on Latency:** Every custom word added adds latency to the voice response. To maintain high-speed interactions, more than **40 words** are not allowed per agent.
***
## Managing Your Library
You can view and manage your full list of custom pronunciations in the **Pronunciation Table**.
* **Search:** Quickly find specific terms using the **Search words** bar.
* **Audition:** Use the **Play** action to verify any existing entry.
* **Delete:** Use the **Trash** icon to remove entries and free up space within your 40-word limit.
By mastering **Word Management**, your Voice Agents will deliver a more polished, human-like experience that respects local linguistic nuances.
# Choose agent voice
Source: https://docs.verloop.io/build/configure-voices/choose-agent-voice
# Speech Profiles & Voice Selection
Finding the perfect voice is critical for creating an authentic brand experience. Verloop provides an extensive library of hhuman-like voices designed to power everything from **Native English** AI Agents to **Voice AI Agents for Indian Languages** to specialized **Arabic Accent Voice AI Agents**.
Use the **Speech Profiles** section to explore, audition, and curate a shortlist of voices that resonate with your target audience.
***
## Exploring the Voice Library
Our library features a diverse range of voices categorized by gender, language, and professional persona. Whether you need a "youthful and sharp" tone for a modern app or a "calm and informative" voice for customer support, the library offers curated profiles for every scenario.
### Localized Voice Excellence
* **Voice AI Agents for Indian Languages:** Access natural-sounding voices like *Kavya* or *Tara* for Indian-accented English, or *Riya* for native Hindi. In addition, languages AI Agent voices in languages are Tamil, Telugu, Kannada, Gujarati, Marathi and others are available.
* **Hinglish Capabilities:** Select voices optimized for code-switching, allowing your Voice Agent to transition seamlessly between English and Indian regional languages in a single sentence.
* **Arabic Accent AI Agents:** Utilize advanced filters to find a range of Arabic voices covering various regional dialects like Emirati Arabic, Khaleeji Arabic, Egyptian accent etc to ensure your agent sounds local to every caller.
* **Native English AI Agents:** 10+ English accents like American, Australian, British and others are supported.
* **Multi-lingual Voices:** These voice profiles are capable of having conversation in 32 languages at the same time and maintain same persona.
* **80+ Languages:** Verloop AI Agents can hold dialogue in 80+ worldwide languages.
***
## Curating Your Favorites
With a vast selection available, the **Speech Profiles** tool allows you to build a personalized collection of voices for quick access during Recipe creation.
Browse the **All Speeches** list and click the **Play** icon next to any profile to hear a live sample. This helps you evaluate the clarity, speed, and "personality" of the **Smart AI** before deployment.
Narrow down your search using the **Speech Profiles Filter**. You can filter by:
* **Gender:** Toggle between Male, Female, or view All.
* **Language & Accent:** Quickly isolate voices for **Voice AI Agents for Indian Languages** or specific international accents like Singaporean.
* **Quality & Skills:** Filter by specific "Skills" tags such as Multi-lingual, Standard, or Indian.
When you find a voice that fits your brand, click the **Star (Bookmark)** icon. Bookmarked voices are saved to your favorites, making it easy to assign them to different nodes in your **Voice AI Agents** without searching the entire library again.
For custom-added voices, you can use the **Edit** (pencil) or **Delete** (trash) icons to update descriptions or remove profiles that are no longer needed.
# Telephony Fundamentals
Source: https://docs.verloop.io/build/integrate-telephony/basics
Understanding Core Principles and Integration Techniques
Verloop Voice AI Agents leverage modern telephony protocols and technologies to seamlessly bridge traditional voice networks with digital voice intelligence.
This section explains the fundamental mechanisms of telephony, key technical concepts, and the integration methods available for your deployment.
## How Telephony Works
Telephony enables the transmission of voice communications over distances by converting sound into electrical signals, transporting these signals over a network, and then converting them back to sound at the destination. A few key steps are listed below
A typical voice call begins when a user initiates a call via a PSTN (Public Switched Telephone Network) or VoIP endpoint. The call is then routed through various network components until it reaches your Voice AI platform.
When a call is initiated, analog audio signals are converted to digital data using codecs. This digital data is packetized and transmitted over IP networks. At the receiving end, the packets are reassembled, and digital-to-analog conversion takes place to reproduce the sound.
For both inbound and outbound calls, a real-time, bi-directional communication channel is established between the caller and the Verloop Voice AI. This channel is maintained using robust protocols that ensure low latency and high call quality.
## Key Concepts
Understanding telephony integrations requires familiarity with several technical terms:
1. **SIP (Session Initiation Protocol)** - A signaling protocol used to establish, maintain, and terminate communication sessions over IP networks, including voice and video calls. Think of it as the language your phone system uses to talk to Verloop.io.
2. **PSTN (Public Switched Telephone Network)** - The PSTN is the traditional circuit-switched telephone network used worldwide. It forms the backbone for conventional voice communications and connects with VoIP systems via gateways.
3. **WebRTC (Web Real-Time Communication)** - Web sockets offer a full-duplex communication channel over a single TCP connection. This persistent connection is crucial for real-time applications such as call control, signaling, and media exchange in web-based integrations.
4. **Trunk** - A virtual connection that carries multiple communication channels. In the context of SIP, a SIP trunk connects your phone system to Verloop.io.
5. **Additional Concepts**
1. **Codecs** - Algorithms that compress and decompress digital audio, ensuring efficient data transmission.
2. **Media Gateways** - Devices or software that translate media streams between different telephony protocols.
3. **Signaling Protocols** - Standards that manage the setup, control, and teardown of calls.
## Available Integration Methods
Verloop.io offers several integration methods to suit your existing telephony setup:
Leverages the Session Initiation Protocol(SIP) to establish a direct and robust connection. This method is ideal for advanced call routing and complex call-handling logic.
Uses Web Real-Time Communication for browser-based voice calls. It is optimized for low-latency interactions and can be embedded directly into web applications for a seamless user experience.
In addition to mentioned integration methods, Verloop provides out-of-the-box connectivity with popular telephony providers such as
1. **Twilio** - Known for its comprehensive cloud communications services - ideal choice for global customers and reach.
2. **Knowlarity** - Specializes in enterprise-grade voice solutions.
3. **Exotel** - A popular platform for customer engagement and voice services.
# Managing Phone Numbers
Source: https://docs.verloop.io/build/integrate-telephony/managing-phone-numbers
Integrate telephony providers or leverage Verloop's telephony to connect with your customers with Voice Agents.
To bring your **Voice Agents** to life, you must connect them to a telephony provider. This section covers how to add phone numbers, link them to specific Recipes, and configure advanced call behavior for your Voice Agents.
***
## Adding a Phone Number
You can integrate your existing telephony infrastructure to route calls through Verloop's **Voice Agents**.
Navigate to **Settings > Voice > Phone Numbers** and click the **+ Add another number** button.
Link your physical number to a conversational flow:
* **Phone Number:** Select your country code and enter the full phone number.
* **Recipe:** Select the specific Recipe (Conversation Flow) that this number should trigger. This allows you to have dedicated lines for specialized Voice Agents.
Select your preferred provider and enter the required credentials from your provider's dashboard:
| Provider | Required Credentials |
| :------------- | :----------------------------------------------------------- |
| **Twilio** | Account SID, Auth Token |
| **Exotel** | Account SID, API Key, API Token, Outbound App Id, Sub Domain |
| **Knowlarity** | API Token, API Key, Plan Id, Plan Name, Sound Id |
| **Verloop.io** | Use Verloop's native telephony stack. |
Fine-tune how the Voice Agent listens and Automate Phone Calls on this specific line:
* **Language:** Select the primary language for speech-to-text processing.
* **Boosted Keywords:** Enter specific words (like brand names or industry terms) to increase recognition accuracy. This is highly recommended for **Hinglish** and specialized **Arabic Accent AI Agents**.
* **Voice Setup:** Choose the default **Speech Profile** for this number.
***
## Advanced Call Configurations
Manage the lifecycle of a call to optimize costs and improve user experience through the **Other configurations** section.
### End Call on Silence
This setting determines the time from the last message from the user when the system will force close the call.
* **Range:** **1 minute** up to **5 minutes**.
* **Best Practice:** For **Voice Agents for Banking**, a slightly longer silence threshold can accommodate natural pauses(when user might be searching for documents) in conversation.
### Max call duration with AI
To prevent runaway costs or stuck sessions, set a hard limit on the longest a phone call will be allowed to go on before forced disconnection.
* **Range:** **5 minutes** up to **30 minutes**.
* **Usage:** For complex support flows using Voice Agents, a 10-15 minute limit is typically sufficient.
* **Best Practice:** For **Voice Agents for Marketing** and **Voice Agents for Outbound Calling**, in our experience calls do not go past 2-3 minutes.
***
## Managing Existing Numbers
On the main **Phone Numbers** page, you can see a summary of all connected lines:
* **Status Toggle:** Quickly enable or disable a number using the green toggle switch.
* **Provider Label:** Easily identify if a number is hosted via **Exotel**, **Twilio**, or **Other Partners**.
* **Edit/Delete:** Expand any number row to modify its **Telephony Setup** or remove it from the platform.
# Custom SIP Integration (BYOC)
Source: https://docs.verloop.io/build/integrate-telephony/sip-integration
Bring Your Own Carrier to power Verloop Voice AI Agents using your existing telephony infrastructure.
# Custom SIP Trunking
Verloop supports a **Bring Your Own Carrier (BYOC)** model, allowing enterprises to integrate their existing SIP trunks directly with our platform. This enables you to leverage our **Voice AI Agents** while maintaining your current telecom contracts, pricing, and number management.
This guide outlines the technical requirements and data exchange process needed to bridge your SIP server (PBX/SBC) with Verloop.
***
## Integration Requirements
To establish a secure SIP trunk, specific connection details must be exchanged between your network engineering team and Verloop.
### 1. Inbound Calls (Your Server -> Verloop)
To route calls from your customers to our **Voice AI Agents**, we need to establish a trusted handshake.
* **Termination IP Address:** The public IP address or FQDN of your SIP Gateway/SBC where the trunk originates.
* **DID Number:** The specific phone number(s) routing to this trunk. This is used for logic mapping and transferring calls back if needed.
* **Verloop SIP IP:** Our public Signaling IP where you will point your SIP traffic.
* **Extension Number:** A fallback identifier.
* *Why?* If your SIP server does not forward the original 'To' header correctly, we use this extension number to identify the tenant and route the call to the correct agent.
### 2. Outbound Calls (Verloop -> Your Server)
If you plan to use **Voice AI Agents** for outbound campaigns (e.g., Lead Qualification or Collections) using your own lines:
**Authentication:** Most outbound setups require SIP Authentication.
* You must provide the **Username** and **Password** for the SIP trunk.
* Verloop will use these credentials to authenticate every outbound invite sent to your gateway.
***
## The Integration Workflow
Configuring a custom SIP trunk is a collaborative process. Follow these steps to go live.
Collect your **Termination IP**, **DID list**, and (if applicable) **Outbound Credentials**. Ensure your firewall is prepared to allow traffic from external SIP providers.
Contact your Verloop Customer Success Manager or Solutions Engineer with the subject line: **"New SIP Trunk Integration Request"**.
* Submit your IP details securely.
* Request Verloop's **SIP IP** and your unique **Extension Number**.
Once data is exchanged:
1. **Your Side:** Add Verloop's SIP IP to your firewall's Allowlist (ACL) to permit traffic on port 5060 (UDP/TCP) or 5061 (TLS).
2. **Our Side:** We will configure our Session Border Controller (SBC) to accept invites from your Termination IP.
We will conduct a joint test to verify the handshake:
* **Inbound Test:** Route a test call to the DID. Verify the **Smart AI** picks up and audio is bi-directional.
* **Outbound Test:** Trigger a test call from the Verloop dashboard. Verify the call lands on your handset via your carrier.
* **Transfer Test:** Verify the agent can transfer the call back to your human agents (PSTN/SIP Refer).
***
## Important Considerations
### Call Transfer Behavior
When using high-touch support roles, calls often need to transfer back to a human agent.
* Ensure your SIP setup supports **SIP REFER** or allows us to dial a DID that routes back into your internal call queue (ACD).
### Latency Management
Using a custom SIP trunk adds an extra "hop" to the network journey.
* To maintain the low latency required for natural Voice Agent conversation, ensure your SIP Gateway is geographically close to the Verloop region you are hosted in (e.g., Mumbai for India, Dubai and Riyadh for Middle East).
**Codec Mismatch:** Verloop primarily uses **G.711 (PCMU/PCMA)** for audio. Ensure your SBC is configured to negotiate these codecs to avoid "dead air" or transcoding delays.
# Speech Recognition Optimization
Source: https://docs.verloop.io/build/integrate-telephony/speech-recognition-optimization
Configure your Voice Agent to handle linguistic nuances, from Khaleeji Arabic to Hinglish and LATAM Spanish.
Fine-tuning how your **Voice Agent** listens is just as important as how it speaks. This is more importanting when focus is to **Automate Phone Calls** for regions like India, Middle East, South East Asia as people speak many languages(Hindi, Arabic, Malay, Tamil, Telugu etc.) and often expectation from Voice Agents is to understand code-switched languages like Hinglish(Hindi and English mixed).
The Speech Recognition settings allow you to calibrate your Voice Agents to understand the specific linguistic nuances of your callers.
***
## Configuring Recognition Settings
By customizing speech-to-text (STT) parameters at the phone number level, you ensure your agent accurately captures intent even in linguistically diverse environments.
Choose the base language the **Smart AI** should expect to hear on this line.
* **For Indian Markets:** Select from a wide array of regional options to power **Voice AI for Indian Languages** like Hindi, Marathi, or Bangla.
* **For Middle Eastern Markets:** Setting the primary language to Arabic is the first step in deploying **Voice AI for Arabic Language**.
Use the **Boosted Keywords** field to give the model a "heads-up" on specific terms it might encounter.
* **Industry Jargon:** Add technical terms or product names that are unique to your business.
* **Dialectal Nuances:** For **Voice AI for Arabic Language**, you can boost specific local terms to help the agent differentiate between **Khaleeji**, **Emirati** and various other dialectsm.
* **Hinglish Support:** Add common English words frequently used in Indian regional speech to improve the fluidity of **Voice AI for Indian Languages**.
# Voice Setup & Personalization
Source: https://docs.verloop.io/build/integrate-telephony/voice-setup
Configure the voice identity and phonetic accuracy for your voice agent.
Once you have selected your telephony provider, the final step in the **Phone Number** configuration is defining the acoustic identity of the line. This ensures that when your **Voice AI Agent** picks up, it sounds exactly like the persona you designed.
***
## Assigning a Voice Profile
The **Voice** setting allows you to link a specific **Speech Profile** to this phone number. This is where you decide if this line handles support queries with a "Calm & Professional" tone or sales calls with an "Energetic & Persuasive" one.
Click the **Voice** dropdown to view your available Speech Profiles. This list includes both the standard system voices and any **Custom Speech Profiles** you have added (e.g., ElevenLabs or Azure integrations).
Click the **Play icon** next to the selected voice to hear a real-time sample.
* **Tip:** Always audition the voice to ensure it matches the region. A **Voice AI Agent for Indian Languages** should use a relevant profile to ensure the accent resonates with local callers.
***
## Pronunciation Configuration
Even the most advanced **Voice Agents** can struggle with unique brand names or regional dialect terms. The **Pronunciation Words** section allows you to attach specific phonetic rules—previously defined in your **Word Management** library—to this specific phone line.
### Managing Latency vs. Accuracy
**Critical Performance Note:** Every custom pronunciation word you add forces the AI to check a lookup table before generating speech.
* **Impact:** Adding too many words can introduce noticeable latency (lag) before the agent responds.
* **Limit:** We recommend adding **only essential terms** that the AI consistently mispronounces. Do not add common words.
### Best Practices for Pronunciation
When configuring **Voice AI Agents for Arabic** or **Indian Languages**, prioritizing the right words is key to maintaining a smooth conversation flow.
| Scenario | Do This (Add to List) | Avoid This (Do Not Add) |
| :------------------ | :------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- |
| **Brand Names** | Add unique company names (e.g., *"Verloop"* -> *"Vur-loop"*). | Don't add standard English words unless the local pronunciation is vastly different. |
| **Regional Cities** | Add cities with complex spellings (e.g., *"Sharjah"* or *"Thiruvananthapuram"*). | Don't add major global cities (London, Dubai) that models already know. |
| **Cultural Terms** | Add specific honorifics or units (e.g., *"Lakhs"*, *"Dirhams"*). | Don't add slang that doesn't impact understanding. |
### How to Add Words
1. Click into the **Pronunciation Words** field.
2. Select the specific terms from your global **Word Management** list that apply to this phone line's use case.
3. Test the line to ensure the **Voice Agent** uses the phonetic mapping correctly without causing awkward pauses.
# Consuming Insight Data
Source: https://docs.verloop.io/build/post-call-insights/consuming-data
Access your Post-Call Insights via Dashboard, Webhooks, and Reports.
# Viewing & Using Data
Once your **Voice AI Agents** have finished the call and information is processed, the data is available through three primary channels. Insight is typically completed within seconds but may take up to 5 minutes after the call ending.
## 1. Dashboard & Transcript View
For manual review, you can see the analysis side-by-side with the call transcript.
* Navigate to the **Conversation Screen**.
* Look for the **Post-Call Insights** widget.
* **Status:** You may see "Analyzing Your Call..." immediately after hang-up. Once done, the values (e.g., `Sentiment: Positive`) will appear.
## 2. Real-Time Webhooks
For CRM integrations (Salesforce, HubSpot, Zoho), use Webhooks to push data instantly.
The webhook event `analysis_success` will contain a payload similar to this:
```json theme={null}
{
"trigger_type": "analysis_success",
"channel": "voice",
"room": {
"analysis": {
"user_defined": {
"interest_in_loan": "true",
"lead_status": "Qualified",
"call_summary": "Customer is interested in 5 Lakh loan for home renovation."
}
}
}
}
## 3. Reporting & API
All analysis parameters are automatically added as columns in your **Master Report** downloads (headers will look like analysis.interest_in_loan).
```
# Post-Call Insights Overview
Source: https://docs.verloop.io/build/post-call-insights/overview
Automatically extract key insights and qualify leads from your Voice AI Agent conversations.
## Post-Call Insights
Unlock the full potential of your **Voice Agents** by automating the quality assurance and data extraction process.
Post-Call Insights eliminates the need for manual listening by using AI to analyze transcripts immediately after a call ends. Whether you need to verify if a loan interest was expressed, check if a specific "Hinglish" phrase was used, or summarize a 10-minute support call, this feature delivers structured data in near real-time.
## Key Benefits
Automatically tag calls as "Qualified Lead" or "Follow-up Needed" without human intervention.
Convert unstructured voice conversations into clean JSON data (Dates, Numbers, Yes/No) for your CRM.
Stop listening to thousands of empty calls. Let the AI flag only the critical interactions for review.
Works seamlessly across Voice Agents for Indian Languages, Arabic and Global dialects, extracting intent regardless of the accent.
## How It Works
1. **Define Parameters:** You set up specific questions or data points you want the AI to extract (e.g., "Did the customer agree to the appointment?").
2. **Automated Processing:** As soon as the call ends, our **AI Engine** processes the transcript.
3. **Data Delivery:** The structured results are pushed to your Webhook, API, and Dashboard within seconds.
# Defining Insight Parameters
Source: https://docs.verloop.io/build/post-call-insights/setup
Configure the specific data points you want your Voice Agent to extract.
## Setting Up Insight
To start capturing insights, you need to define "Parameters" in your Recipe Settings. Each parameter acts as a specific instruction to the AI on what information to look for in the conversation.
## Configuration Steps
Open your Recipe and click on the **Global Settings** and navigate to **Post-Call Insights** tab.
Click **Add Insight**. You can define up to **10 unique insights** per agent.
* **Name:** The system name for the variable (e.g., `loan_interest_level`). This is used in API/Webhooks.
* **Description:** The "Prompt" for the AI. Be descriptive! (e.g., *"Did the user express interest in a Gold Loan? Check for phrases like 'I want money' or 'Loan chahiye'."*)
* **Type:** Select the data format (see below).
## Data Types
Choosing the right data type ensures your **Voice AI Agents** return clean, usable data for your integrations.
| Type | Description | Best Use Case |
| :---------- | :----------------------------------------- | :---------------------------------------------------------- |
| **Text** | Extracts a string of text (max 300 chars). | "Summarize the customer's complaint about the credit card." |
| **Boolean** | Returns `true` or `false`. | "Did the customer ask for a manager?" |
| **Number** | Extracts a numeric value. | "What is the customer's age?" or "Loan amount requested?" |
| **Date** | Extracts dates in a standard format. | "When does the user want the callback?" |
| **Enum** | Selects from a predefined list of options. | Lead Status: `["Qualified", "Not Interested", "Callback"]` |
**Pro Tip for Indian Languages:** When writing descriptions for **Hinglish** agents, you can include Hindi keywords in the description to help the AI understand context (e.g., *"Check if user said 'Haan' or 'Yes' for confirmation"*).
# Agent settings
Source: https://docs.verloop.io/build/recipe-builder/agent-settings
# Global Settings
The Global Settings define the foundational behavior, identity, and boundaries of your **Smart AI**. These settings apply across the entire conversation, ensuring your **Voice AI Agents for Indian Languages** and **Voice AI Agents for Arabic** remain consistent and professional throughout the call.
## Configuration Steps
The Persona is the core identity of your **Voice AI Agent**. It dictates the tone, style, and vocabulary used by the Agent.
* **Tone & Style:** Specify if the agent should be formal, empathetic, or enthusiastic.
* **Linguistic Nuance:** When building AI Agents specialized in regional langiages, define the dialect preference. Ex. If building **Voice AI Agents for Arabic**, define if the Agent should use Modern Standard Arabic or a specific regional dialect (e.g., Emirati or Egyptian).
* **Cultural Language Context:** For **Voice AI Agents for Indian Languages** or any other code-switched language, you can instruct the agent to use code-switch (e.g., using "Hinglish") to sound more natural to the caller.
Confines act as the "guardrails" for your AI Agents. This ensures the Agent stays on topic and does not discuss restricted subjects.
* **Knowledge Boundary:** Restrict the agent to only use the information provided in your Recipe.
* **Behavioral Constraints:** Prevent the agent from mentioning competitors or making unauthorized financial commitments.
* **Safety:** Essential for **Voice AI Agents** in sensitive sectors like healthcare or finance to ensure compliance and data privacy.
Determine how your **Voice AI Agent** should behave when it encounters an answering machine or voicemail system.
* **Disconnect:** The agent will automatically hang up if a voicemail is detected, optimizing costs.
* **Leave a Message:** If selected, you can provide a specific script. For example: *"Hello, this is the Verloop Assistant calling. I'm sorry I missed you, I will try calling back later."*
* **Multi-lingual Support:** You can define different messages for your **Voice AI Agents for Arabic** or **Voice AI Agents for Indian Languages** to ensure the recorded message matches the recipient's preferred language.
## Impact on Conversation Flow
Global settings provide the "vibe" and ruleset that individual blocks inherit. While a specific block might handle a specialized task like "Booking a Room," the **AI Agent Persona** ensures the way the room is booked feels consistent with the start of the call.
By properly configuring these settings, your Voice AI Agents become more than just scripts - they become intelligent, localized representatives of your brand.
# Overview
Source: https://docs.verloop.io/build/recipe-builder/overview
# Verloop Recipe Overview
> Master the art of building sophisticated **Voice AI Agents** using Verloop Recipes - a modular framework designed for high-stakes, multi-lingual conversational automation.
## What is a Verloop Recipe?
Verloop Recipes allow you to architect **Voice AI Agent** interactions using a structured block-and-transition system. These recipes leverage advanced **LLM** capabilities to power **Voice AI Agents for Indian Languages**, **Voice AI Agents for Arabic**, English and 80+ other languages providing human-like fluidity with enterprise-grade control.
By breaking down complex call scenarios into manageable logic blocks, you can ensure your **Voice AI Agents** maintain context, handle nuances in dialects, and deliver predictable outcomes across diverse linguistic landscapes.
### Key Benefits
* **Advanced LLM Integration**: Harness the power of state-of-the-art Large Language Models for natural, context-aware reasoning.
* **Hyper-Local Capabilities**: Specialized **Voice AI Agents for Indian Languages** (Hindi, Hinglish, Tamil, Telugu, etc.) and **Voice AI Agents for Arabic** (Modern Standard and regional dialects) apart from Native Support for English and 80+ other global languages.
* **Predictable AI Blocks**: Each block contains specific logic, ensuring the agent never "hallucinates" outside of your defined business rules.
* **Multi-Modal Transitions**: Seamlessly move between automated voice responses, API triggers, and complex decision-making.
* **Fine-tuning Capabilities**: Improve performance of your workflow with point examples and scenarios.
***
## Components
* **Global Settings**: The foundation of your agent's identity.
* **Core Personality**: Define the tone and persona of your **AI Agent**.
* **On-Call Behaviour**: Define how your AI Agent should behave when encountering scenarios like Voicemail.
* **Global Knowledge Base**: The "brain" accessible by the **LLM** throughout the call.
* **Blocks**: The modular unit of the conversation.
* **Conversation Blocks**: Powered by AI Blocks to handle fluid dialogue.
* **Action Blocks**: For real-time API calls, database updates and call termination.
* **Intent-Based Routing**: Understand user intent and trigger transitions.
* **Conditional Logic**: Routes calls based on user data, language preference, or sentiment.
* **Functions**: Extended capabilities for your **Voice AI Agents**.
* CRM Integrations (Salesforce, Zendesk).
***
## How it Works
Verloop Recipes function as a blueprint for workflow execution. Every block defines a specific objective, such as "Collect Account Number" or "Explain Product Benefits."
Once a transition condition is met (e.g., the user provides their ID), the Recipe moves to the next block. While initial setup involves mapping your business flow, the result is a highly stable **Voice AI Agent** that performs with extremely high accuracy, even in complex multilingual environments.
## Quickstart
To deploy your first Voice AI Agent:
1. Navigate to the **Verloop Recipe Section**.
2. Select a template optimized for your use-case, such as a "Appointment Booking Agent" or "Lead Qualification Agent".
3. Or, you can start with a Blank Template and build from scratch.
4. Configure your workflow parameters and test the voice experience in the sandbox.
5. Hit "Publish" to go live across your telephony or web channels.
## Next Steps
Build complex workflows and handle real world scenarios in the next section.
# API Block
Source: https://docs.verloop.io/build/recipe-builder/recipe-block/api-block
Extend your agent’s capabilities by integrating external systems to push and pull data in real-time.
The **API Block** is the gateway between your Voice AI agent and your external infrastructure. It allows the agent to interact with third-party servers to fetch dynamic information (like account balances) or perform actions (like booking appointments) during an active call.
### Common Use Cases
* **Voice Agent for Banking:** Fetching the latest account balance or validating a PIN.
* **Voice Agent for Healthcare:** Checking doctor availability and creating a new appointment record.
* **Voice Agent for Logistics:** Pushing a "delivery rescheduled" status update to your CRM.
***
## Configuration
Setting up an API block involves defining how the agent talks to your server and handling the response.
Choose the HTTP method required for the operation. We support standard methods including `GET`, `POST`, `PUT`, `PATCH`, and `DELETE`.
Enter the API endpoint.
* **Full URL:** You can paste the fully qualified URL (e.g., `https://api.myservice.com/v1/users`).
* **Relative Path:** If a Base URL is configured in your global agent settings, you can simply add the path (e.g., `/v1/users`).
Select the appropriate authentication profile. These are pre-configured in your platform settings (e.g., Basic Auth, Bearer Token, API Key) to ensure secure access without hardcoding credentials in the recipe.
Add any required HTTP headers (e.g., `Content-Type: application/json`).
* **Dynamic Values:** You can use variables collected earlier in the workflow (e.g., `{{user_id}}`) to pass dynamic context in the headers.
Configure the data to be sent with the request.
* **Query Params:** Key-value pairs appended to the URL.
* **Body:** The JSON payload sent with POST/PUT requests. Supports variable injection for personalization.
Fine-tune the resilience and performance of the call:
* **Timeout:** Define how long the agent waits for a response. Configurable from **1 second to 40 seconds**.
* **Retry on Failure:** Toggle this to automatically retry the request if it fails (e.g., due to a network blip). You can configure up to **5 retries**.
***
## Performance & Latency
**Critical: The "Dead Air" Risk**
The AI Agent remains **silent** while the API request is processing.
* **Expectation:** Your endpoint should ideally respond within milliseconds.
* **Impact:** If the API takes 3-4 seconds to respond, the user experiences 3-4 seconds of complete silence ("dead air"). This significantly degrades the user experience and may cause them to hang up.
* **Mitigation:** If you anticipate a slow API, place a **Message Block** immediately before the API Block saying, *"Let me look that up for you, please hold on a second..."* to set user expectations.
***
## Routing & Error Handling
The API Block dictates the flow based on the technical outcome of the HTTP request.
### 1. Success Path
Triggered when the API returns a successful status code (typically 2xx).
* **Data Usage:** The JSON response from the API is captured, and you can map specific fields to variables (e.g., `api_response.balance` -> `{{current_balance}}`) for use in the next SmartAI or Message block.
### 2. Failure Path
Triggered when the API returns an error code (4xx, 5xx) or times out.
* **Fallback Logic:** You must connect this node to a fallback flow. For example, if a "Check Balance" API fails, route to a Message block saying, *"I'm having trouble accessing your records right now. Let me transfer you to a human agent."*
***
## Testing
Before publishing, use the **Test** function within the block. This allows you to trigger the API call with mock variables to ensure authentication, headers, and payload structures are correct and that the endpoint is reachable.
# Ask Block
Source: https://docs.verloop.io/build/recipe-builder/recipe-block/ask-block
Configure the LLM-powered Ask Block to capture specific user inputs effectively.
The **Ask Block** is an LLM-powered component designed to ask a single, specific question to the user. It simplifies your conversation workflow by dedicating one optimized block to one specific task.
Instead of writing complex logic chains, the Ask Block utilizes a pre-trained model to handle user inputs, understand context, and drive the conversation forward.
## Key Components
### 1. Prompt Section
This is the core instruction for the Voice AI Agent. Because the block is pre-trained, you do not need to provide a complex system prompt.
Simply input the specific question you want the agent to ask. The system will automatically convert this into a highly optimized Voice AI prompt.
**Example:**
* **Do:** "What is the size of the apartment you are looking to buy?"
* **Don't:** "You are a real estate agent. You need to ask the user about the apartment size. If they say small, ask..."
### 2. Add Condition
This optional setting acts as a "Gatekeeper" for the conversation flow. It defines the logic required for the agent to move to the next node.
* **How it works:** If the condition is not met, the agent will loop on this node until the user provides the required information.
* **Example:** "The condition is achieved if the user has stated their apartment size requirement in sqft."
### 3. Finetuning
Use this section to train the AI on specific edge cases to improve model accuracy. You can provide "Few-Shot" examples (conversation history + expected agent response).
Finetuning is highly recommended if your question involves industry-specific jargon or if you expect ambiguous answers from users.
***
## Settings & Configuration
The Settings section provides granular control over the AI Agent's behavior, specifically regarding latency, interruptions, and fallback logic.
### Retry Logic
**"After how many tries should the bot exit the block?"**
This setting prevents the agent from getting stuck in an infinite loop.
* **Function:** If the user fails to provide the required information after the specified count, the agent will "hard exit" the block and follow the **Fallback Node** connection.
* **Use Case:** Ideal for optional information collection. If the user declines to answer multiple times, the agent can gracefully move on.
### Conversation History
**Enable Conversation History** allows the agent to remember context from earlier in the call.
* **Enabled:** The agent delivers a personalized experience referencing previous answers.
* **Disabled:** Useful for mandatory disclosures or legal statements where the script must be followed exactly without being influenced by prior context.
### Barge-in (Interruptions)
This control determines if the user can interrupt the agent while it is speaking.
* **Enabled (Recommended):** Creates a natural, humane conversation flow.
* **Disabled:** Use this for compliance statements or critical instructions where the agent *must* finish speaking. User audio during this time is ignored by the flow logic but is still captured in the transcript.
When Barge-in is enabled, [Smart Interruption](../smart-interruption) determines *how* the agent reacts — distinguishing genuine interruptions from acknowledgements and background noise, and resuming from where it left off.
### Nudge
Controls how the agent handles extended periods of silence.
* **Default:** The agent repeats the question in a slightly altered way to re-engage the user.
* **Disabled:** The agent will wait indefinitely (or until global timeout) if the user does not speak.
### AnswerFlow
AnswerFlow allows the Ask Block to leverage your knowledge base (RAG) to answer user queries that might arise during the block's execution.
* **Document Selection:** Select specific tags (e.g., `refund`, `credit-card`) to limit the knowledge base scope. If left blank, the entire library is used.
* **Response Formatting:** Define the persona or format for the answer (e.g., "Short and concise," "Descriptive").
**Latency Alert:** Enabling AnswerFlow requires the agent to search and retrieve documents, which will add latency to the response time. Use only when necessary.
### Speech Normalization
Converts structured data (numbers, dates, units) into natural speech text. You can choose from the list of normalization options supported.
* **Example:** Converts "1000sqft" to "one thousand square feet."
**Latency Alert:** Only add normalizations required for the specific block. Adding unnecessary normalizations increases processing time and latency.
### Expressiveness
This setting adjusts the flexibility of the AI Agent's tone, allowing you to control the creativity and variance of responses.
* **Range**: 0 (Concise) to 1 (Chatty).
* **Default**: 0.5.
**Usage Guidelines:**
* **Low (Concise)**: Use for consistent, precise answers where factual accuracy is prioritized.
* **High (Chatty)**: Use for more creative, varied responses to make the conversation feel more natural and human-like.
**Best Practices:**
* For sections that require **exact compliance** with policies or strict scripts, it is best to use a **low value**.
* When creating **introductions** or small talk, we recommend a setting of at least **mid-way (0.5 or higher)** to ensure naturalness.
### Exit Condition & Variable Extraction
These conditions determine when the agent successfully leaves the block. You can also extract variables (slots) from the conversation here.
**Performance Best Practice:** Extracting variables at this stage leads to higher latency.
We recommend **avoiding variable extraction** within the Ask Block unless that data is immediately required in the very next step of the flow. For data analysis, utilize **Post-Call Insights** to extract information after the call concludes.
# Code Block
Source: https://docs.verloop.io/build/recipe-builder/recipe-block/code-block
Execute custom Javascript to handle data transformation, calculations, and complex logic.
The **Code Block** enables you to run custom Javascript within your Voice AI recipe. It provides a sandboxed environment to perform operations that standard blocks cannot handle, such as complex math, string manipulation, or array processing.
Unlike the SmartAI block which relies on LLMs, the Code Block is deterministic and runs locally within the execution flow.
## Key Features
### 1. Zero Latency Impact
The Code Block executes in a lightweight, sandboxed environment with minimal resource usage. The execution time is negligible, meaning it **does not add latency** to the conversation flow. It is the preferred method for logic operations over using an LLM.
### 2. The Development Interface
The block opens into a dedicated code editor designed for safe development and testing.
* **Editor Pane:** Supports standard Javascript (ES6).
* **Test Variables:** A dedicated input section to define mock values for variables (e.g., `{{account_balance}}`) to simulate real call scenarios.
* **Console:** A built-in debug console that captures logs and errors during testing.
### 3. Function Structure
All logic must be wrapped within the main function, which exposes three core arguments:
```javascript theme={null}
function main(context, variables, plugins) {
// Your logic here
// return variables;
}
```
* `context`: Contains metadata about the current call state.
* `variables`: Access to read and write recipe variables.
* `plugins`: Allows interaction with built-in system plugins to affect the broader workflow.
***
## Workflow Routing
The Code Block does not use standard linear routing. Instead, it determines the path based on the outcome of the code execution.
**If Success**
The workflow follows this connection if the code executes without throwing any errors. This is the primary path for valid logic execution.
**If Fails**
The workflow follows this connection if:
* There is a syntax error in the code.
* A runtime error occurs during execution.
* The execution times out.
Always connect the If Fails node to a fallback message or error handling block. This ensures the call does not hang or drop abruptly if your script encounters an unexpected issue.
## Testing & Debugging
You can validate your logic without publishing the recipe using the built-in test suite.
* **Define Inputs**: Enter mock data in the Test variables pane on the right.
* **Execute**: Click the Test button at the bottom right.
* **Debug**: Review the Console pane to see console.log outputs or error traces.
Use the Code Block to sanitize data before passing it to a SmartAI block. For example, converting a raw timestamp (e.g., "1600") into spoken time (e.g., "4 PM") using code is faster and more reliable than asking the AI to figure it out.
# Condition Block
Source: https://docs.verloop.io/build/recipe-builder/recipe-block/condition-block
Route conversations based on deterministic logic and variable comparisons.
The **Condition Block** acts as the logic gate of your Voice AI Agent recipe. It evaluates specific variables against defined criteria and routes the conversation workflow accordingly.
This block is essential for scenarios where the conversation path depends on hard data rather than fuzzy user conversation. For example, a refund process might differ significantly based on the transaction amount, user loyalty tier, and product category.
**Rule of Thumb: Condition vs. SmartAI**
* **Use Condition Block:** When you have clear, rule-based logic (e.g., "If `amount` > 500 AND `user` is 'Gold'"). It is faster and error-proof.
* **Use SmartAI/Ask Block Routing:** When you need to route based on vague user intent or sentiment (e.g., "If the user seems angry").
## How it Works
The Condition Block executes logic similar to `if / else-if / else` statements in programming. It evaluates rules top-to-bottom and follows the path of the first matching condition.
### 1. Defining Conditions
To configure a logic rule:
1. **Select a Variable:** Choose the variable you want to evaluate (e.g., `{{transaction_amount}}`).
2. **Choose an Operator:** Select a comparison operator such as:
* Equals / Not Equals
* Less than / Greater than
* Contains / Does not contain
* Is Empty / Is Not Empty
* Other conditions
3. **Define the Value:** Compare the variable against:
* **A Fixed Value:** (e.g., `500`, `active`, `refund`)
* **Another Variable:** (e.g., `{{account_balance}}`)
### 2. Complex Logic (Nesting & Chaining)
You can handle sophisticated scenarios by layering your logic:
* **AND/OR Logic:** Combine multiple criteria within a single branch (e.g., "If `Region` is 'US' **AND** `Status` is 'Active'").
* **Else-If Structure:** Add multiple distinct conditions to the block. The system checks them sequentially.
* *Condition 1:* Is User VIP? -> Route to VIP Flow.
* *Condition 2:* Is User New? -> Route to Onboarding Flow.
### 3. The "Else" Fallback
Every Condition Block includes a default **Else** path. If none of the defined conditions are met, the workflow automatically follows this connection
# Message Block
Source: https://docs.verloop.io/build/recipe-builder/recipe-block/message-block
Broadcast static messages with low latency and high reliability.
The **Message Block** is the most fundamental building block in a Verloop.io Voice AI Agent recipe. It is used to relay a static text to the user.
Unlike the SmartAI or Ask blocks, the Message Block does not wait for user input. It processes the text, speaks it, and the workflow **immediately continues** to the next block in the recipe. Because the content is static, it is processed rapidly, making it the **fastest-performing** and **lowest latency AI Agent** block in your toolkit.
## Key Components
### 1. Text
This is the script the Voice AI Agent will speak. While the core message is static, you can make it dynamic using variables.
**Personalization**
You can use the `{{variable_name}}` format to insert data collected earlier in the flow or passed via API.
* **Example Input:** `Hello {{first_name}}, hope you are having a great day.`
* **Agent Output:** "Hello John, hope you are having a great day."
**Best Practice for Long Scripts**
If you have a long paragraph or a multi-sentence disclosure, we recommend splitting it into **two or more sequential Message Blocks** rather than putting it all in one. This improves the pacing of the speech and makes the flow easier to manage.
### 2. Node Connections
Since the Message Block does not listen for a user response, it relies on simple linear flow.
* **Incoming Connection:** The trigger or previous block that leads to this message.
* **Outgoing Connection:** The block the agent should execute immediately after speaking this text.
***
## Strategic Use Cases & Latency Optimization
While simple, the Message Block is a powerful tool for optimizing the "feel" of a conversation. Because the text is constant, the system **aggressively caches** these blocks, resulting in near-zero processing time.
### 1. Masking Latency
When transitioning between two heavy processing blocks (like two SmartAI blocks), there may be a slight delay while the LLM generates a response.
You can place a short Message Block between them to "buy time." While the agent speaks the filler text, the system begins processing the next block in the background.
**Pro Tip: Improving Perceived Latency**
Use a Message Block with a phrase like *"Let me check that for you just a moment..."* before transitioning to a complex SmartAI block. This keeps the audio channel active and makes the interaction feel instantaneous to the user.
### 2. Mandatory Disclosures
Use this block when the agent must say something exactly the same way every time for compliance reasons (e.g., "This call is being recorded for quality assurance"). SmartAI blocks may vary the phrasing; Message Blocks do not.
### 3. Introductions
It is the standard block for the very start of a conversation, establishing the agent's identity before logic branches occur.
# SmartAI Block
Source: https://docs.verloop.io/build/recipe-builder/recipe-block/smartai-block
Leverage LLMs for complex logic, multi-step conversations, and intelligent decision-making.
The **SmartAI Block** is the most powerful conversational node in the Verloop.io Voice AI recipe. Unlike standard blocks that follow a defined path, the SmartAI block uses Large Language Models (LLMs) to interpret user intent, handle complex logic, and engage in multi-turn conversations.
This block is ideal for detailed decision-making scenarios, such as a debt collection agent that needs to negotiate payment plans based on a user's specific financial situation.
**Pro Tip: Choose the Right Block**
If you only need to ask a **single question** to capture a specific data point (e.g., "What is your date of birth?"), the **Ask Block** is better suited for the job. Use SmartAI for conversations that require reasoning or multiple steps.
## Core Components
### 1. Prompt Section
This is the core "brain" of the agent for this specific block. Here, you define the persona, the goal, and the workflow the Voice AI Agent must follow.
For the SmartAI Block, you should optimize for a **detailed prompt** that cleanly captures:
* Use-cases and primary goals.
* Edge cases (what to do if the user says something unexpected).
* Boundary conditions (what the agent is *not* allowed to do).
**Using Variables**
You can personalize the prompt using the `{{variable_name}}` format supported by the Recipe.
* **Example:** "You are speaking to `{{customer_name}}` regarding a loan amount of `{{debt_amount}}` due on `{{payment_date}}`."
### 2. Additional Instructions
This field is optional but highly recommended for defining behavioral guardrails. While the *Prompt* handles the "What," the *Additional Instructions* handle the "How."
* **Best Practice:** Keep these pointwise and explicit.
* **Example:** "Do not use slang. Maintain an empathetic tone. Never ask for the credit card CVV."
***
## Settings
The Settings section provides granular control over the AI Agent's behavior, latency, and interaction style.
### 3.1 Retry Limits
**"After how many tries bot should exit the block?"**
This setting prevents the agent from getting stuck in an infinite loop.
* **How it works:** If the agent cannot determine an intent or collect the required info after the specified number of attempts, it will "hard exit" the block.
* **Where it goes:** The flow will move immediately to the **Fallback Node** connection.
* **Use Case:** Helpful when collecting optional information. If the user refuses to share it twice, the bot can move on rather than harassing the user.
### 3.2 Conversation History
**Enable conversation history**
* **Enabled (Default):** The agent is aware of everything discussed previously in the call. This ensures a personalized and context-aware conversation.
* **Disabled:** The agent treats this block as an isolated event.
* **When to Disable:** Use this for mandatory disclosures or legal statements where previous context should not alter the agent's strict adherence to the script.
### 3.3 Barge-in
**Allow Barge-in for voice calls**
* **Enabled:** Users can interrupt the agent while it is speaking. This feels natural and humane.
* **Disabled:** The agent will ignore user audio until it finishes speaking its current line.
* **Note:** Even when disabled, user audio during the speech is recorded in the transcript.
### 3.4 Nudge
**Behavior during silence**
* **Enabled (Default):** If there is an extended period of silence, the agent will repeat the question or prompt the user in a slightly altered way to keep the conversation moving.
* **Disabled:** The agent will wait indefinitely (or until the call times out) if the user does not speak.
### 3.5 AnswerFlow (RAG)
AnswerFlow allows the agent to consult external documents and training materials to answer dynamic queries.
* **Document Tags:** You can filter which documents the agent accesses by selecting specific tags (e.g., `refund_policy`, `credit_card`). If left blank, the entire library is used.
* **Response Formatting:** You can define how the answer should be delivered (e.g., "Keep it under 2 sentences," "Use a bulleted list").
**Latency Impact**
Enabling AnswerFlow requires the system to search and retrieve documents. This will add a small amount of latency to the Agent's response time.
### 3.6 Speech Normalization
This converts raw text data (like "100mg" or "14/02/2024") into natural spoken text (like "one hundred milligrams" or "the fourteenth of February, twenty twenty-four").
Only add normalizations that are strictly required for this specific block. Each active normalization rule adds processing time, leading to higher latency.
### 3.7 Expressiveness
This setting adjusts the flexibility of the AI Agent's tone, allowing you to control the creativity and variance of responses.
* **Range**: 0 (Concise) to 1 (Chatty).
* **Default**: 0.5.
**Usage Guidelines:**
* **Low (Concise)**: Use for consistent, precise answers where factual accuracy is prioritized.
* **High (Chatty)**: Use for more creative, varied responses to make the conversation feel more natural and human-like.
**Best Practices:**
* For sections that require **exact compliance** with policies or strict scripts, it is best to use a **low value**.
* When creating **introductions** or small talk, we recommend a setting of at least **mid-way (0.5 or higher)** to ensure naturalness.
### 3.8 Intent and Variable Mapping
This section defines the "Success" exit conditions for the block.
* **Intents:** Define the specific user intents that, when detected, will cause the agent to exit this block and move to the next step in the recipe.
* **Variable Extraction:** You can configure the LLM to extract specific data points (e.g., `payment_amount`) upon exit.
**Performance Note**
Extracting variables via the SmartAI block increases latency.
* **Recommendation:** Avoid extraction unless the data is immediately required for logic in the *very next* block.
* **Alternative:** If the data is only needed for analytics, use **Post-Call Insights** to extract it after the call concludes.
### 3.9 Intent Passing
**Intent to be passed to the next block**
Specify a variable name here. The intent detected within this SmartAI block will be stored in this variable, allowing you to use it for routing logic further down the workflow.
***
## Fallback Node
Every SmartAI block must have a Fallback Node connection. The workflow routes here if:
1. The **Retry Count** (Section 3.1) is exhausted.
2. The AI Agent encounters a system error or critical failure.
Ensure this node connects to a graceful error message or a human handoff to prevent call drops.
# Recipe blocks
Source: https://docs.verloop.io/build/recipe-builder/recipe-blocks
# Understanding Recipe Blocks
Blocks are the fundamental units of a Verloop Recipe. Each block represents a specific step, action, or decision in your conversation flow. By connecting these blocks, you can build sophisticated **Voice AI Agents** capable of handling everything from simple FAQs to complex, multi-turn consultations.
## Block Library
Verloop offers a diverse set of blocks to balance rigid control with the fluid reasoning of AI Agents.
***
### 1. Message Block
The simplest way to deliver information. This block plays a pre-defined script or static text to the caller.
* **Key Features:** Instant text-to-speech rendering and low-latency execution.
* **What it Enables:** Greetings, legal disclaimers, or providing specific information that doesn't require user input.
* **Settings:** \* **Text Content:** The exact script the agent reads.
### 2. Smart AI Block (LLM Block)
The core of your advanced automation. This block leverages a **LLM** to handle open-ended, multi-turn dialogues within a specific context.
* **Key Features:** Context retention across multiple exchanges, intent recognition, and entity extraction.
* **What it Enables:** Handling complex workflows where the user might ask follow-up questions or go off-script.
* **Settings:** \* **System Prompt:** Instructions for the **Smart AI Block** behavior.
* **Conversation History:** Should the conversation block have access to historic conversations.
* **Number of Turns:** Number of times a AI Agent will try to assist before exiting the block.
* **Barge In:** Enable or Disable ability of caller to interrupt while the AI Agent is speaking.
* **Nudge:** Nudge enables AI Agent to repeat the question in case the caller has not anwsered it.
* **AnswerFlow:** Enables AI Agent to access trained information from the Knowledge Base, Website and any other information source configured.
* **Speech Normalization:** Converts numbers, units, weight and other data types into natural conversation format.
* **Intent and Variable Mapping:** Intent and variable to be extracted from the conversation as it proceeds within the block.
* **Exit Condition:** Flow exits from the block once a Intent is matched from the configured list.
* **Pro Tip:** Essential for **Voice AI Agents for Arabic** to manage complex morphological variations and regional nuances in natural conversation.
* **Latency Tip:** Variable extraction from intent recognition adds to the overall call latency.
### 3. Ask Block
A specialized, simplified **LLM** block designed to capture a single piece of information from the user.
* **Key Features:** Built-in retry logic and specific slot-filling capabilities.
* **What it Enables:** Efficient data collection (e.g., "What is your account number?").
* **Settings:** \* **System Prompt:** Instructions for the **Smart AI Block** behavior.
* **Conversation History:** Should the conversation block have access to historic conversations.
* **Number of Turns:** Number of times a AI Agent will try to assist before exiting the block.
* **Barge In:** Enable or Disable ability of caller to interrupt while the AI Agent is speaking.
* **Nudge:** Nudge enables AI Agent to repeat the question in case the caller has not anwsered it.
* **AnswerFlow:** Enables AI Agent to access trained information from the Knowledge Base, Website and any other information source configured.
* **Speech Normalization:** Converts numbers, units, weight and other data types into natural conversation format.
* **Intent and Variable Mapping:** Intent and variable to be extracted from the conversation as it proceeds within the block.
* **Exit Condition:** Flow exits from the block once a Intent is matched from the configured list.
* **Pro Tip:** Essential for **Voice AI Agents for Arabic** to manage complex morphological variations and regional nuances in natural conversation.
* **Latency Tip:** Variable extraction from intent recognition adds to the overall call latency.
### 4. Condition Block
The brain of your routing logic. It evaluates variables and conversation data to determine the next path.
* **What it Enables:** Personalized journeys. For example, routing high-value customers to a human and others to an automated flow.
* **Settings:** \* **Logic Rules:** Define `IF/ELSE` conditions based on user input, existing variables or API responses.
* **Variables:** Compare captured data points (e.g., `order_value > 500`).
### 5. Code Block
For technical flexibility, the Code Block allows you to execute custom JavaScript snippets directly within the flow.
* **Key Features:** High-speed execution of custom logic.
* **What it Enables:** Data transformation, complex math, or formatting **LLM** outputs before they are spoken.
* **Settings:** \* **JS Editor:** Write and test your JavaScript.
* **Input/Output Mapping:** Pass variables into and out of the code environment.
### 6. API Block
Integrate your **Voice AI Agent** with your tech stack in real-time.
* **What it Enables:** Fetching live data (like order status) or pushing updates to your CRM during a call.
* **Settings:** \* **Method:** GET, POST, PUT, DELETE.
* **Configuration:** Headers, Query Params, and JSON Body.
* **Mapping:** Save API response fields into Recipe variables.
### 7. Webhook Block
Make standard webhook calls to external services to trigger events outside the call.
* **Key Features:** Event-driven notifications.
* **Settings:** Webhook URL and custom payload configuration.
### 8. Transfer Block
The bridge between **Voice Agents** and human empathy. This block hands off the call to a live representative.
* **What it Enables:** Escalation for complex issues or high-priority sales closures.
* **Settings:** \* **Transfer Destination:** SIP URI or PSTN number.
* **Transfer Message:** A bridge message played to the caller during the handoff.
* **Localized Transfer:** Crucial for **Voice AI Agents for Arabic** to route calls to native-speaking support teams based on detected dialects.
### 9. Close Block
The logical conclusion of a call or a specific branch of the conversation.
* **What it Enables:** Professional termination of the call.
* **Settings:** \* **Closing Script:** Final words before disconnect.
* **Disposition:** Tag the call for reporting (e.g., "Resolved", "Inquiry").
***
## How to Connect Blocks
Select a block from the side panel and drag it onto the Recipe canvas. Start with a **Message Block** for a welcome greeting.
Every block has output ports (circles on the side). Click and drag a line from an output port to the next block.
* **Standard Transitions:** Follow the flow of conversation.
* **Logic Transitions:** In a **Condition Block**, connect the "True" port to one block and the "False" port to another.
Ensure variables are passed between blocks. For example, take the `id_number` captured in an **Ask Block** and map it into the **API Block** to pull the user's profile.
Use the "Simulator" to talk to your agent. Observe how the **Smart AI** moves through the blocks and adjust your prompts or logic paths based on the real-time feedback.
# Smart Interruption
Source: https://docs.verloop.io/build/recipe-builder/smart-interruption
Let your Voice AI Agent distinguish real interruptions from acknowledgements and noise, and resume from where it left off.
**Smart Interruption** makes your **Voice AI Agent** handle overlapping speech the way a good human agent would. It ignores background noise, takes a quick *"haan"* or *"ok"* as encouragement to keep going, and stops instantly when the caller genuinely interrupts. Most importantly, once interrupted, the agent **remembers that it was cut off** — so its next turn answers what the caller asked instead of repeating a message the caller never heard.
You can enable Smart Interruption for each Voice Recipe under **General Settings → Advanced**.
## How It Works
Whenever the caller makes a sound while the agent is speaking, Smart Interruption classifies it as background noise, an acknowledgement, or a genuine interruption — and reacts accordingly.
| When the caller... | The agent... |
| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| Is on a noisy line (traffic, TV, a fan) but isn't speaking | Keeps talking — background noise isn't speech, so it doesn't cut the agent off. |
| Says a short acknowledgement — *"haan"*, *"ok"*, *"hmm"*, *"go on"* | Keeps talking, with no awkward pause. The caller is encouraging the agent, not taking over. |
| Starts like an acknowledgement but continues — *"haan, lekin..."* (yes, but...) | Keeps talking for a beat, then stops as soon as it's clear the caller is making a point. |
| Genuinely cuts in — *"Wait—"*, *"How much is it?"*, *"No, I meant..."* | Stops immediately and hands the floor to the caller. |
| Starts to speak, then trails off (a false start) | Picks up smoothly from where it left off, avoiding dead air. |
| Is on a very noisy line, or keeps half-interrupting | Becomes more cautious — waits for clear, sustained speech before stopping. |
**Acknowledgements are language-aware.** The list of "encouraging" words (*"haan"*, *"ok"*, *"achha"*, *"yes yes"*...) follows the language the call is being conducted in — so the behavior stays natural for **Voice AI Agents for Indian Languages**, **Voice AI Agents for Arabic**, English, and every other supported language.
## No More Repeating Itself
After a genuine interruption, the agent continues from the point the caller actually heard. It treats the cut-off part of its reply as never delivered, so it responds to what the caller said instead of re-reading its earlier message.
**Example:**
* **Agent:** "Our Premium plan includes 24×7 support, free delivery, and priority—" *(caller cuts in)*
* **Caller:** "How much is it?"
* **Agent:** "It's ₹999 a month."
The agent knows the caller only heard the first few words, so it simply answers the question — instead of repeating the entire pitch and answering the actual question last.
## Enabling Smart Interruption
Open your Voice Recipe and navigate to **General Settings**.
Select the **Advanced** tab, alongside settings like **Voicemail Management** and **Background Sound**.
Enable the **Smart Interruption** toggle. The agent will now distinguish real interruptions from acknowledgements and noise, pausing briefly when the caller speaks and resuming from where it left off unless it's a genuine interruption.
If your callers are often on noisy lines, enable **Caution on noisy lines**. The agent becomes more conservative about stopping — it waits for clear, sustained speech before yielding, so it isn't yanked around by chaotic audio.
### Settings Reference
| Setting | What it does |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Smart Interruption** | On/off. Distinguishes real interruptions from acknowledgements and noise. The agent pauses briefly when the caller speaks, resuming from where it left off, unless it's a genuine interruption. |
| **Caution on noisy lines** | Controls how quickly the agent becomes conservative about stopping when the line is noisy or the caller keeps half-interrupting. |
## Reviewing Interruptions in Transcripts
Interrupted agent replies are visible in the conversation transcript:
* **"Interrupted" tag:** Any agent reply that was cut off carries a clear tag in the transcript.
* **The unspoken portion:** Reviewers can see the part of the agent's reply that the caller never heard, so transcripts reflect the real conversation.
Smart Interruption governs *how* the agent reacts when interruptions are allowed. If a block has [Barge-in](./recipe-block/ask-block#barge-in-interruptions) disabled — for example, for compliance statements — the agent always finishes speaking in that block, regardless of this setting.
# Capabilities
Source: https://docs.verloop.io/capabilities
Technology that delivers the best-in-class quality
Verloop Voice AI Agents come equipped with an array of features designed to elevate customer interactions.
Below are some of the standout capabilities that set us apart:
## Powerful ASR Engine(STT)
Backed by a world world-class ASR engine, our Voice AI Agent converts spoken words into text with unparalleled accuracy, even in challenging environments.
It supports diverse accents, handles background noise, and adapts to varying speech speeds, ensuring no detail is missed. A few things that set us apart
1. **Ultra-low Latency**: One of the fastest transcription engines for delivering human-like conversations.
2. **Noise Cancellation**: Filters out background noise to focus on the speaker’s voice and deliver high-quality transcription even in most challenging environments.
3. **Multi-lingual**: Capable of handling 80+ globally spoken languages with a low Word Error Rate.
4. **Accent Adaptation**: Trained on datasets from around the world to understand regional variations.
5. **Contextually Aware**: Goes beyond literal transcription to interpret text accurately.
## Agentic LLM for Voice
In the world of voice AI agents, speed, and intelligence go hand in hand.
At Verloop, we leverage a best-in-class, **purpose-trained** Large Language Model (LLM) that is specifically optimized for telephony automation. This not only ensures low-latency responses but those are also highly accurate, empathetic, and context-aware.
#### **Purpose-Trained Agentic AI**
Our LLM is meticulously trained on vast datasets of real-world conversational data, ensuring it understands nuances, idioms, and industry-specific terminology.
Unlike generic models, we fine-tune for telephony use cases, enabling the ability to handle complex queries, maintain context across multi-turn dialogues, and deliver humane responses.
1. **Contextual Awareness**: The model retains conversation history to provide coherent and relevant responses, even in lengthy interactions.
2. **Dynamic Adaptability**: It adapts to user behavior in real time, ensuring personalized and meaningful exchanges.
3. **Industry-Specific Customization** : Tailored training for industries like healthcare, retail, finance, and more ensures domain expertise and compliance with regulatory standards.
#### **Multilingual Ready**
With businesses operating across borders, language should never be a barrier. We support **multiple languages and dialects**, making it a perfect fit for global enterprises.
Whether your customers speak English, Spanish, Hindi, or Arabic, our agents deliver fluent, culturally appropriate responses.
1. **Accent and Dialect Recognition**: Accurately interprets regional accents and dialects to ensure inclusivity.
2. **Seamless Code-Switching**: Handles multilingual speakers who switch between languages mid-conversation.
3. **Localized Tone and Etiquette**: Adapts tone and phrasing to align with cultural norms and expectations.
#### **Ultra-Low Latency Responses**
Speed is critical in voice interactions, and our platform is engineered for **ultra-low latency processing**.
By combining optimized algorithms with cloud-native infrastructure, we generate responses within milliseconds, eliminating awkward pauses and maintaining the natural flow of conversation.
1. **Optimized Algorithms**: Focussed on enabling the lowest possible TTFB.
2. **Edge Computing**: Processes requests closer to the source for minimal delay.
#### **Ever-Improving Performance**
What sets us apart is our ability to constantly learn and evolve the models. Through **continuous feedback loops and training**, we refine our ability to understand user preferences, emerging trends, and new vocabulary. This ensures that your Voice AI agents stay ahead of the curve, delivering increasingly accurate and empathetic responses over time.
## Human-Like Speech Quality
Our **state-of-the-art TTS engine** transforms text into lifelike, natural-sounding speech, ensuring every interaction feels authentic and engaging.
Designed specifically for telephony automation, it combines clarity, speed, and multilingual support to deliver a best-in-class voice experience.
#### **Natural and Human-Like Voice Quality**
Our TTS engine produces **highly realistic voices** that are indistinguishable from human speech. With advanced prosody modeling and intonation control, it ensures smooth, expressive delivery that captures the nuances of natural conversation.
1. **Customizable Voices**: Choose from a variety of voice styles, tones, and accents to match your brand identity.
2. **Emotionally Intelligent**: Adjust tone based on context - calm for reassurance, upbeat for promotions, or empathetic for support scenarios.
#### **Multilingual and Accent Support**
Break language barriers with **seamless multilingual capabilities**. We support dozens of languages and dialects, ensuring inclusivity and accessibility for global audiences.
1. **Fluent Across Borders**: Accurately pronounces words in multiple languages, including regional dialects.
2. **Code-Switch Ready**: Effortlessly handle conversations where users switch between languages.
#### **Ultra-Low Latency**
Speed is critical in voice interactions, and our TTS engine delivers **crystal-clear audio in milliseconds**. Optimized for low-latency performance, it ensures no delays or interruptions, even during peak loads.
## Advanced Analytics and Insights
Gain valuable insights into customer behavior and agent performance with our real-time and reporting dashboards.
Track not just operational metrics like call duration and deflection rate but go beyond and measure your conversations for sentiment trends, and conversational patterns to refine strategies and optimize outcomes.
1. **Operational Metrics**: Detailed operational metrics to run your Voice AI operations.
2. **Sentiment Analysis**: Monitor emotional shifts during conversations to identify areas for workflow improvements.
3. **Conversation Logs**: Review past interactions to troubleshoot issues or highlight best practices.
4. **Actionable Reports**: Generate detailed reports to inform decision-making and strategy refinement.
# Code Blocks
Source: https://docs.verloop.io/essentials/code
Display inline code and code blocks
## Basic
### Inline Code
To denote a `word` or `phrase` as code, enclose it in backticks (\`).
```
To denote a `word` or `phrase` as code, enclose it in backticks (`).
```
### Code Block
Use [fenced code blocks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) by enclosing code in three backticks and follow the leading ticks with the programming language of your snippet to get syntax highlighting. Optionally, you can also write the name of your code after the programming language.
```java HelloWorld.java theme={null}
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
````md theme={null}
```java HelloWorld.java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
````
# Images and Embeds
Source: https://docs.verloop.io/essentials/images
Add image, video, and other HTML elements
## Image
### Using Markdown
The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images using the following code
```md theme={null}

```
Note that the image file size must be less than 5MB. Otherwise, we recommend hosting on a service like [Cloudinary](https://cloudinary.com/) or [S3](https://aws.amazon.com/s3/). You can then use that URL and embed.
### Using Embeds
To get more customizability with images, you can also use [embeds](/writing-content/embed) to add images
```html theme={null}
```
## Embeds and HTML elements
Mintlify supports [HTML tags in Markdown](https://www.markdownguide.org/basic-syntax/#html). This is helpful if you prefer HTML tags to Markdown syntax, and lets you create documentation with infinite flexibility.
### iFrames
Loads another HTML page within the document. Most commonly used for embedding videos.
```html theme={null}
```
# Markdown Syntax
Source: https://docs.verloop.io/essentials/markdown
Text, title, and styling in standard markdown
## Titles
Best used for section headers.
```md theme={null}
## Titles
```
### Subtitles
Best use to subsection headers.
```md theme={null}
### Subtitles
```
Each **title** and **subtitle** creates an anchor and also shows up on the table of contents on the right.
## Text Formatting
We support most markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
| Style | How to write it | Result |
| ------------- | ----------------- | ----------------- |
| Bold | `**bold**` | **bold** |
| Italic | `_italic_` | *italic* |
| Strikethrough | `~strikethrough~` | ~~strikethrough~~ |
You can combine these. For example, write `**_bold and italic_**` to get ***bold and italic*** text.
You need to use HTML to write superscript and subscript text. That is, add `` or `` around your text.
| Text Size | How to write it | Result |
| ----------- | ------------------------ | ---------------------- |
| Superscript | `superscript` | superscript |
| Subscript | `subscript` | subscript |
## Linking to Pages
You can add a link by wrapping text in `[]()`. You would write `[link to google](https://google.com)` to [link to google](https://google.com).
Links to pages in your docs need to be root-relative. Basically, you should include the entire folder path. For example, `[link to text](/writing-content/text)` links to the page "Text" in our components section.
Relative links like `[link to text](../text)` will open slower because we cannot optimize them as easily.
## Blockquotes
### Singleline
To create a blockquote, add a `>` in front of a paragraph.
> Dorothy followed her through many of the beautiful rooms in her castle.
```md theme={null}
> Dorothy followed her through many of the beautiful rooms in her castle.
```
### Multiline
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
```md theme={null}
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
```
### LaTeX
Mintlify supports [LaTeX](https://www.latex-project.org) through the Latex component.
8 x (vk x H1 - H2) = (0,1)
```md theme={null}
8 x (vk x H1 - H2) = (0,1)
```
# Navigation
Source: https://docs.verloop.io/essentials/navigation
The navigation field in mint.json defines the pages that go in the navigation menu
The navigation menu is the list of links on every website.
You will likely update `mint.json` every time you add a new page. Pages do not show up automatically.
## Navigation syntax
Our navigation syntax is recursive which means you can make nested navigation groups. You don't need to include `.mdx` in page names.
```json Regular Navigation theme={null}
"navigation": [
{
"group": "Getting Started",
"pages": ["quickstart"]
}
]
```
```json Nested Navigation theme={null}
"navigation": [
{
"group": "Getting Started",
"pages": [
"quickstart",
{
"group": "Nested Reference Pages",
"pages": ["nested-reference-page"]
}
]
}
]
```
## Folders
Simply put your MDX files in folders and update the paths in `mint.json`.
For example, to have a page at `https://yoursite.com/your-folder/your-page` you would make a folder called `your-folder` containing an MDX file called `your-page.mdx`.
You cannot use `api` for the name of a folder unless you nest it inside another folder. Mintlify uses Next.js which reserves the top-level `api` folder for internal server calls. A folder name such as `api-reference` would be accepted.
```json Navigation With Folder theme={null}
"navigation": [
{
"group": "Group Name",
"pages": ["your-folder/your-page"]
}
]
```
## Hidden Pages
MDX files not included in `mint.json` will not show up in the sidebar but are accessible through the search bar and by linking directly to them.
# Reusable Snippets
Source: https://docs.verloop.io/essentials/reusable-snippets
Reusable, custom snippets to keep content in sync
One of the core principles of software development is DRY (Don't Repeat
Yourself). This is a principle that apply to documentation as
well. If you find yourself repeating the same content in multiple places, you
should consider creating a custom snippet to keep your content in sync.
## Creating a custom snippet
**Pre-condition**: You must create your snippet file in the `snippets` directory.
Any page in the `snippets` directory will be treated as a snippet and will not
be rendered into a standalone page. If you want to create a standalone page
from the snippet, import the snippet into another file and call it as a
component.
### Default export
1. Add content to your snippet file that you want to re-use across multiple
locations. Optionally, you can add variables that can be filled in via props
when you import the snippet.
```mdx snippets/my-snippet.mdx theme={null}
Hello world! This is my content I want to reuse across pages. My keyword of the
day is {word}.
```
The content that you want to reuse must be inside the `snippets` directory in
order for the import to work.
2. Import the snippet into your destination file.
```mdx destination-file.mdx theme={null}
---
title: My title
description: My Description
---
import MySnippet from '/snippets/path/to/my-snippet.mdx';
## Header
Lorem impsum dolor sit amet.
```
### Reusable variables
1. Export a variable from your snippet file:
```mdx snippets/path/to/custom-variables.mdx theme={null}
export const myName = 'my name';
export const myObject = { fruit: 'strawberries' };
```
2. Import the snippet from your destination file and use the variable:
```mdx destination-file.mdx theme={null}
---
title: My title
description: My Description
---
import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';
Hello, my name is {myName} and I like {myObject.fruit}.
```
### Reusable components
1. Inside your snippet file, create a component that takes in props by exporting
your component in the form of an arrow function.
```mdx snippets/custom-component.mdx theme={null}
export const MyComponent = ({ title }) => (
{title}
... snippet content ...
);
```
MDX does not compile inside the body of an arrow function. Stick to HTML
syntax when you can or use a default export if you need to use MDX.
2. Import the snippet into your destination file and pass in the props
```mdx destination-file.mdx theme={null}
---
title: My title
description: My Description
---
import { MyComponent } from '/snippets/custom-component.mdx';
Lorem ipsum dolor sit amet.
```
# Global Settings
Source: https://docs.verloop.io/essentials/settings
Mintlify gives you complete control over the look and feel of your documentation using the mint.json file
Every Mintlify site needs a `mint.json` file with the core configuration settings. Learn more about the [properties](#properties) below.
## Properties
Name of your project. Used for the global title.
Example: `mintlify`
An array of groups with all the pages within that group
The name of the group.
Example: `Settings`
The relative paths to the markdown files that will serve as pages.
Example: `["customization", "page"]`
Path to logo image or object with path to "light" and "dark" mode logo images
Path to the logo in light mode
Path to the logo in dark mode
Where clicking on the logo links you to
Path to the favicon image
Hex color codes for your global theme
The primary color. Used for most often for highlighted content, section
headers, accents, in light mode
The primary color for dark mode. Used for most often for highlighted
content, section headers, accents, in dark mode
The primary color for important buttons
The color of the background in both light and dark mode
The hex color code of the background in light mode
The hex color code of the background in dark mode
Array of `name`s and `url`s of links you want to include in the topbar
The name of the button.
Example: `Contact us`
The url once you click on the button. Example: `https://mintlify.com/docs`
Link shows a button. GitHub shows the repo information at the url provided including the number of GitHub stars.
If `link`: What the button links to.
If `github`: Link to the repository to load GitHub information from.
Text inside the button. Only required if `type` is a `link`.
Array of version names. Only use this if you want to show different versions
of docs with a dropdown in the navigation bar.
An array of the anchors, includes the `icon`, `color`, and `url`.
The [Font Awesome](https://fontawesome.com/search?q=heart) icon used to feature the anchor.
Example: `comments`
The name of the anchor label.
Example: `Community`
The start of the URL that marks what pages go in the anchor. Generally, this is the name of the folder you put your pages in.
The hex color of the anchor icon background. Can also be a gradient if you pass an object with the properties `from` and `to` that are each a hex color.
Used if you want to hide an anchor until the correct docs version is selected.
Pass `true` if you want to hide the anchor until you directly link someone to docs inside it.
One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
Override the default configurations for the top-most anchor.
The name of the top-most anchor
Font Awesome icon.
One of: "brands", "duotone", "light", "sharp-solid", "solid", or "thin"
An array of navigational tabs.
The name of the tab label.
The start of the URL that marks what pages go in the tab. Generally, this
is the name of the folder you put your pages in.
Configuration for API settings. Learn more about API pages at [API Components](/api-playground/demo).
The base url for all API endpoints. If `baseUrl` is an array, it will enable for multiple base url
options that the user can toggle.
The authentication strategy used for all API endpoints.
The name of the authentication parameter used in the API playground.
If method is `basic`, the format should be `[usernameName]:[passwordName]`
The default value that's designed to be a prefix for the authentication input field.
E.g. If an `inputPrefix` of `AuthKey` would inherit the default input result of the authentication field as `AuthKey`.
Configurations for the API playground
Whether the playground is showing, hidden, or only displaying the endpoint with no added user interactivity `simple`
Learn more at the [playground guides](/api-playground/demo)
Enabling this flag ensures that key ordering in OpenAPI pages matches the key ordering defined in the OpenAPI file.
This behavior will soon be enabled by default, at which point this field will be deprecated.
A string or an array of strings of URL(s) or relative path(s) pointing to your
OpenAPI file.
Examples:
```json Absolute theme={null}
"openapi": "https://example.com/openapi.json"
```
```json Relative theme={null}
"openapi": "/openapi.json"
```
```json Multiple theme={null}
"openapi": ["https://example.com/openapi1.json", "/openapi2.json", "/openapi3.json"]
```
An object of social media accounts where the key:property pair represents the social media platform and the account url.
Example:
```json theme={null}
{
"x": "https://x.com/mintlify",
"website": "https://mintlify.com"
}
```
One of the following values `website`, `facebook`, `x`, `discord`, `slack`, `github`, `linkedin`, `instagram`, `hacker-news`
Example: `x`
The URL to the social platform.
Example: `https://x.com/mintlify`
Configurations to enable feedback buttons
Enables a button to allow users to suggest edits via pull requests
Enables a button to allow users to raise an issue about the documentation
Customize the dark mode toggle.
Set if you always want to show light or dark mode for new users. When not
set, we default to the same mode as the user's operating system.
Set to true to hide the dark/light mode toggle. You can combine `isHidden` with `default` to force your docs to only use light or dark mode. For example:
```json Only Dark Mode theme={null}
"modeToggle": {
"default": "dark",
"isHidden": true
}
```
```json Only Light Mode theme={null}
"modeToggle": {
"default": "light",
"isHidden": true
}
```
A background image to be displayed behind every page. See example with
[Infisical](https://infisical.com/docs) and [FRPC](https://frpc.io).
# Code Test
Source: https://docs.verloop.io/essentials/test/code-test
Display inline code and code blocks
## Basic
### Inline Code
To denote a `word` or `phrase` as code, enclose it in backticks (\`).
```
To denote a `word` or `phrase` as code, enclose it in backticks (`).
```
### Code Block
Use [fenced code blocks](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) by enclosing code in three backticks and follow the leading ticks with the programming language of your snippet to get syntax highlighting. Optionally, you can also write the name of your code after the programming language.
```java HelloWorld.java theme={null}
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
````md theme={null}
```java HelloWorld.java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
````
# Developer Tools Introduction
Source: https://docs.verloop.io/get-started/developer-start
Modules for easy but limitless customisation
**Prerequisite**: User needs a Verloop account with Voice AI Agent plan activated.
Verloop offers powerful developer tools to integrate, extend, and customize your Voice AI Agent capabilities. A few key options for seamless customization
### API Based Integration
Follow the steps to generate API token that you can then use for authenticating your API calls -
1. From the Dashboard, go to the **Settings** page
2. Navigate to **API Keys**
3. Click **Generate API Key**
4. Copy and store the token securely for authentication
### Integration options in Recipe Builder
Enhance your bot’s functionality with built-in integration blocks. Navigate to your recipe and you can leverage these blocks for integrating with external APIs and going beyond drag-and-drop customizations.
Trigger external web services to send or receive real-time data.
Webhook Block allows you to exchange information with third-party systems and automate workflows based on user interactions.
Make API calls directly from your bot to fetch or send data dynamically.
Use this to integrate with internal or external services, enriching your bot’s responses with real-time information.
Write custom JavaScript code to process data or apply business logic.
Code block gives developers full flexibility to manipulate responses, format data, or implement complex decision-making within conversations.
Test and troubleshoot integrations within Recipe Builder in real time.
Debug Mode provides detailed logs and error messages, helping developers quickly identify and resolve issues in their bot’s logic or integrations.
These tools empower developers to build highly flexible and robust AI Agents within Verloop.
# Build Your First Recipe
Source: https://docs.verloop.io/get-started/first-recipe
Deploy your first Voice AI Agent in under 5 minutes.
## Your first Voice AI Agent
Verloop Voice AI Agents enable businesses to build, deploy, and manage AI Agents and deliver seamless user interactions.
1. Go to Verloop.io and login to your account
2. If you do not have an existing account, **reach out to sales** by using the Demo link
1. From the Dashboard, navigate to the **Recipe** section
2. Click "Create New Recipe"
3. Select Phone as the Channel
4. Choose a template or start from scratch
1. Add a Welcome Message
2. Configure a Smart AI Block for workflow
1. Click Preview to simulate a conversation.
2. Adjust responses or flows based on the test results.
3. You can leverage Debug Mode for in-depth information
Click Deploy to make the Agent production-ready.
Congratulations! Your AI Phone Agent is now live and can
* Make outbound calls
* Engage users in inbound conversations
* Handle inquiries and process requests 24/7
* Enhance customer interactions
# Quickstart
Source: https://docs.verloop.io/get-started/quick-start
Start building powerful Voice AI Agents in under 5 minutes
## Setting up
The first step to building high-performing Voice AI Agents is setting up the infrastructure that enables communication with the real world.
Get your communication channel dialed in with easy-to-follow steps.
Enable the language capabilities for your Voice Agent.
## Make it yours
Unlock limitless capabilities that make your AI Phone Agents unstoppable.
Quick deployment of your first AI Phone Agent with powerful customization options.
Easily test, refine and deploy production-ready Agents.
## Monitor and Improve
Track and improve your Agent performance with a powerful Dashboard and Reporting.
Track scale and performance with a customizable dashboard.
Leverage reports to find areas of improvement and achieving better results.
# Introduction
Source: https://docs.verloop.io/index
Build, deploy, and scale Voice AI Agents!
Verloop with its powerful **Voice AI Agents** enables businesses to deliver natural, humane, and empathetic conversations at scale.
Whether you're looking to connect with millions of people on outbound call, streamline customer support, or enhance engagement, our Voice AI agents are designed to meet your needs with precision and care.
## What Are Voice AI Agents?
Voice AI agents are Gen AI powered Voice Agents with low-latency and high accuracy speech recognition, language understanding and speech generation capabilities.
These agents interact with users in real-time through voice, mimicking human-like conversations while maintaining efficiency, accuracy and emotions. They’re not just tools but partners in delivering exceptional customer experiences.
## The Future of Customer Conversations
Our Voice AI agents are built on robust, scalable infrastructure that enables them to handle millions of interactions simultaneously without compromising quality.
Powered by purpose-trained Language Models and deep integrations, they seamlessly connect to enterprise tools, ensuring contextual awareness while delivering delightful conversations.
1. **Adaptive Learning**: Continuous improvements driven by underlying model improvements, user feedback and brand specific data.
2. **Multi-Language Support**: Communicate effectively across global markets with support for multiple languages and dialects.
3. **Highly Personalized**: Communicate with customers with perfect history and recall of their past conversations. Build trust and relationship for better adoption.
4. **Customizable Workflows**: Tailor agent behavior to align with specific business goals and industry requirements.
## Humane and Empathetic Conversations
At Verloop, we believe technology should feel personal. Our Voice AI agents go beyond transactional exchanges by incorporating emotional intelligence into their design.
From detecting frustration in tone to offering empathetic responses, these agents ensure every conversation feels authentic and supportive.
1. **Sentiment and Tone Analysis**: Recognize subtle cues like stress, excitement, or confusion to adjust responses accordingly.
2. **Empathetic Personalization**: Use past behavioural data to tailor interactions, making users feel valued and understood.
3. **Backchanneling**: Incorporate human verbal affirmations ("I see," "Got it") to simulate active listening and build rapport.
## Scalability Without Compromise
We are out to build a planet-scale infrastructure and scalability is at the heart of this platform. Whether you’re managing small-scale inquiries or launching large-scale campaigns, our Voice AI Agents can adapt effortlessly to fluctuating demand.
Built on multi-region, fault-tolerant, cloud-native architecture, we ensure consistent performance every single time.
1. **Highly Scalable**: Automatically scales up or down based on traffic patterns.
2. **Sub-second latency**: Respond to customers at a pace possible never before with our edge-deployed and distributed stack.
3. **Highly Distributed**: Deploy agents across regions for latency and compliance requirements.
4. **On-Premise Clusters**: Reach out to us if you are an Enterprise looking for an on-premise hosted solution.
# Create via Excel
Source: https://docs.verloop.io/outreach/bulk-upload
Launch a bulk voice campaign by uploading a customer list.
# Creating a Voice Campaign (Excel)
The Excel upload method is ideal for one-off blasts or daily scheduled lists. Follow this 5-step wizard to launch your campaign.
## Step 1: Details
Navigate to **Outreach > + New Outreach** and configure the basics:
* **Name:** Give your campaign a recognizable name (e.g., "Deepavali Sale - Lead Qual").
* **Channel:** Select **Voice**.
* **Voice Integration:** Choose the specific phone number/line you want these calls to originate from.
* **Trigger:** Select **Via Excel**.
## Step 2: Bot Recipe
Link the campaign to a specific **Voice AI Agent**.
* **Select Recipe:** Choose the flow designed for this campaign (e.g., "Lead Qual Flow v2").
* **Start Recipe Logic:**
* **Start Immediately:** AI speaks as soon as the call connects.
* **Wait for User Greeting:** AI waits for the user to say "Hello" (Recommended for smoother UX).
* **Wait for X seconds:** Adds a fixed delay (1-5s) before speaking.
## Step 3: Audience
Upload your target list.
* **File Format:** Upload your `.xls` or `.csv` file containing phone numbers and any custom variables (like `Name`, `DueAmount`) needed for the Recipe.
* **Skip Duplicates:** Enabled by default to prevent spamming the same number twice in one campaign.
## Step 4: Telephony Settings
Optimize your connection rates with smart dialing rules.
Control when outbound calls are placed by enabling the **Working window** toggle. When enabled, calls are only placed during the hours you define. Any calls that fall outside this window are treated as DND (Do Not Disturb).
**Choose a mode:**
* **Custom** — Manually set a start and end time (HH:MM) to define the exact window during which calls can be made.
* **Business hours** — Select a pre-configured business hours profile (e.g., *Global Business Hours*) from the dropdown. This is useful if your organization already manages business hour schedules centrally.
**What happens to calls during DND hours?**
* **Reschedule after DND** — Calls are paused and automatically queued for the next available slot once the working window opens. This is recommended as it helps reduce voicemail drops.
* **Discard the call** — Calls that fall outside the working window are permanently dropped.
Calls are paused during DND hours. Rescheduling helps reduce voicemail drops.
Set how long to ring before giving up (15s, 20s, 30s). \[cite\_start]Shorter durations reduce voicemail hits.
* **Max Retries:** Set between 0-10 attempts.
* **Retry Interval:** Define the wait time between retries (e.g., 2 hours).
* **Scenarios:** Select which outcomes trigger a retry (e.g., *Busy*, *No Answer*, *Failed*).
## Step 5: Publish
Review your settings and click **Publish**. The system will begin dialing according to your schedule.
# Create via API
Source: https://docs.verloop.io/outreach/campaign-api
Configure a real-time Voice Agent campaign to be triggered programmatically.
# Creating a Voice Campaign (API)
The **Via API** trigger allows you to configure all the telephony rules (DND, Retries, AI behavior) within the dashboard, while managing the audience dynamically through your code. This is essential for event-based calling (e.g., calling a lead immediately after a form signup).
## Configuration Steps
Follow this guide to set up the campaign shell.
Navigate to **Outreach > + New Outreach** and configure the foundational settings:
* **Name:** Enter a unique identifier for your campaign.
* **Channel:** Select **Voice**.
* **Voice Integration:** Choose the phone number that will make the calls.
* **Trigger:** Select **Via API**.
Selecting **Via API** changes the workflow to accept single contact triggers rather than a bulk file upload.
Define how the **Voice AI Agent** behaves once the call connects:
* **Select Recipe:** Choose the specific voice flow for this campaign.
* **Start Logic:** Determine when the AI speaks:
* **Start Immediately:** The agent speaks the moment the call is answered.
* **Wait for User Greeting:** The agent waits for the user to say "Hello" (uses Voice Activity Detection).
* **Wait for X seconds:** Adds a configurable delay (1-5 seconds) before speaking.
Since API calls happen in real-time, these guardrails are critical to ensure compliance and high connection rates.
* **Working Window:** Enable the **Working window** toggle to restrict calls to specific hours. Choose between two modes:
* **Custom** — Manually set a start and end time (HH:MM) for when calls are allowed.
* **Business hours** — Select a pre-configured business hours profile (e.g., *Global Business Hours*) from the dropdown.
* *During DND hours:* Choose to **Reschedule after DND** (calls are queued for the next available slot) or **Discard the call** (calls are permanently dropped). Rescheduling is recommended to reduce voicemail drops.
* **Ring Duration:** Set the maximum ring time (15-30 seconds) to avoid voicemail boxes.
* **Retry Strategy:**
* **Max Retries:** Set attempts from 0 to 10.
* **Retry Interval:** Define the time gap between retries (e.g., 1 Hour).
* **Scenarios:** Choose which outcomes trigger a retry (e.g., **Busy**, **No-answer**, **Failed**).
Review your settings and click **Publish**. Your campaign is now active and listening for API requests.
## Developer Integration
Once published, use the **Campaign ID** from the dashboard to trigger calls via the SendMessage API.
### Authentication
A valid auth token is required for all API requests. The token will be shared separately over email or via the dashboard UI. Include it in the `Authorization` header with every request.
If you send an incorrect, expired, or revoked auth token, the API responds with status `401`:
```json theme={null}
{
"code": "unauthenticated",
"msg": "Authentication required"
}
```
### Endpoint
```
POST https://.verloop.io/api/v1/Campaign/SendMessage
```
Replace `` with your Client ID — the subdomain from your Verloop dashboard URL. For example, if your dashboard is at `https://app.verloop.io`, the endpoint would be:
```
POST https://app.verloop.io/api/v1/Campaign/SendMessage
```
### Request Body
| Field | Type | Required | Description |
| :--------------- | :------------ | :------- | :----------------------------------------------------------------------------------------------- |
| `CampaignID` | string (UUID) | Yes | The Campaign ID from your Outreach dashboard. |
| `To.PhoneNumber` | string | Yes | The recipient's phone number including country code (e.g., `918123002929`). |
| `Variables` | object | No | Key-value pairs for custom variables used in the Recipe (e.g., `customer_id`, `customer_type`). |
| `Callback.URL` | string | No | A webhook URL to receive call status updates. |
| `Callback.State` | object | No | Arbitrary key-value pairs passed back to your webhook for correlation. |
| `ScheduledAt` | object | Yes | Schedule the call for a specific date and time. See [Scheduling Calls](#scheduling-calls) below. |
### Scheduling Calls
Use the `ScheduledAt` object to schedule a call for a specific date and time.
| Field | Type | Required | Description |
| :-------------------------------- | :---------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |
| `ScheduledAt.Time` | string (ISO 8601) | Yes | The date and time to place the call. See supported formats below. |
| `ScheduledAt.BypassCallingWindow` | boolean | No | When `true`, the call is placed at the scheduled time regardless of any DND / Working Window configured on the campaign. Defaults to `false`. |
**Supported time formats for `ScheduledAt.Time`:**
| Format | Example | Behavior |
| :------------- | :-------------------------- | :------------------------------------------------------ |
| UTC | `2026-03-04T10:15:30Z` | Interpreted as UTC. |
| With offset | `2026-03-04T15:45:30+05:30` | Interpreted using the provided UTC offset. |
| Without offset | `2026-03-04T15:45:30` | Interpreted using your dashboard's configured timezone. |
When `BypassCallingWindow` is set to `true`, the call will be placed at the exact scheduled time even if it falls outside your campaign's Working Window / DND hours. Use this with caution to avoid calling recipients during restricted hours.
### Example Request
```bash theme={null}
curl -X POST 'https://app.verloop.io/api/v1/Campaign/SendMessage' \
--header 'Content-Type: application/json' \
--header 'Authorization: ' \
--data '{
"CampaignID": "ac3bf462-ec44-46d4-9e8e-8edda9cffe58",
"To": {
"PhoneNumber": "918123002929"
},
"Variables": {
"customer_id": "my_customer_id",
"customer_type": "vip"
},
"Callback": {
"URL": "https://your-webhook-url.com/callback",
"State": {
"order_id": "12345",
"source": "crm"
}
},
"ScheduledAt": {
"Time": "2026-03-04T11:52:30+05:30",
"BypassCallingWindow": true
}
}'
```
### Response
**200 OK** — Call scheduled successfully:
```json theme={null}
{
"message_id": "d4f7a8b2-1c3e-4a5f-9b6d-7e8f0a1b2c3d"
}
```
Use the returned `message_id` to track the call status via your configured callback webhook.
### Error Codes
| Status | Code | Description |
| :----- | :----------------- | :--------------------------------------------------------------------------------- |
| `400` | `invalid_argument` | Missing required fields (e.g., `CampaignID`, `PhoneNumber`) or campaign not found. |
| `401` | `unauthenticated` | Invalid, expired, or missing auth token. |
| `404` | `not_found` | The request URL is incorrect. Verify the endpoint path and your Client ID. |
| `5XX` | `internal` | Internal server error. Retry the request after a short delay. |
Verloop uses [Twirp](https://twitchtv.github.io/twirp/docs/errors.html) for API serving. Refer to the Twirp error documentation for the full list of error codes and their meanings.
# Outreach Overview
Source: https://docs.verloop.io/outreach/overview
Launch high-volume Voice Agent campaigns for lead qualification, collections, and more.
## Voice Outreach
Verloop Outreach enables you to scale your **Voice AI Agents** beyond inbound support. With the Outreach module, you can trigger thousands of outbound calls simultaneously to qualify leads, collect feedback, or remind customers of overdue payments.
Instead of relying on manual dialers, use Voice Agents to hold natural, human-like conversations at scale.
## Key Features
A dedicated campaign wizard optimized for telephony-first campaigns.
Automatically retry calls based on specific outcomes like "Busy," "No Answer," or "Voicemail."
Define a **Working window** with custom hours or pre-configured business hour profiles. Calls outside the window are automatically paused and either rescheduled or discarded.
Uses **Voice Activity Detection** to ensure the AI speaks only *after* the user says "Hello," avoiding awkward overlaps.
Schedule calls for a specific date and time via the API, with support for multiple timezone formats and the option to bypass DND windows.
## The Outreach Dashboard
The main dashboard gives you a bird's-eye view of your campaign performance.
* **Analytics:** View aggregate stats like "Message Statistics" (Calls Placed), "Error Code Distribution," and "Engagement" rates.
* **Campaign List:** Track the status of every campaign (e.g., `Published`, `Completed`, `Paused`).
* **Quick Actions:** Archive old campaigns or Pause active ones directly from the list view.
## Common Use Cases
| Industry | Use Case | Benefit |
| :------------- | :-------------------- | :-------------------------------------------------------------- |
| **Fintech** | Debt Collection | AI handles sensitive negotiations with empathy and persistence. |
| **EdTech** | Lead Qualification | Filter thousands of sign-ups to find the high-intent learners. |
| **Healthcare** | Appointment Reminders | Reduce no-shows by calling patients 24 hours prior. |
# Chat Testing & Debugging
Source: https://docs.verloop.io/test-voice-agent/manual-chat
Validate conversation flow and inspect raw LLM logs quickly.
## Manual Chat Simulator
The Chat Simulator is your primary workspace for building logic. It strips away the voice layer, allowing you to focus purely on how the **AI Agent** reasons and responds.
## How to Test
1. Open your Recipe in the **Recipe Builder**.
2. Click the **Play Icon** in the top navigation bar.
3. Select **Test as Webchat**.
4. Type messages as if you were the user.
## The Debug Mode
The **Debug Mode** panel is the "black box" recorder for your AI. It reveals exactly what the **LLM** is thinking.
### Key Debug Sections
Shows the exact prompt injected into the LLM, including your **Agent Persona** and **Agent Confines**.
* *Usage:* If the agent is being too casual, check if the "Persona" block was correctly loaded here.
Displays data extracted from the user's input (e.g., `user.city = "Frankfurt"`).
* *Usage:* Essential for Voice Agents, ensuring the agent correctly identifies entities even from complex sentence structures.
The raw text generated by the model before any post-processing.
* *Latency Metric:* Look for **Time taken** (e.g., `1168 ms`). This helps you optimize your prompt length for faster responses.
**Pro Tip:** Use the "Restart Chat" button frequently to clear context and test fresh conversation starts.
# Testing & Debugging Overview
Source: https://docs.verloop.io/test-voice-agent/overview
Strategies for validating your Voice Agent's logic, speech, and latency.
## Testing Your Voice AI Agent
Before deploying your **Voice AI Agents** to live customers, it is critical to validate their behavior across three dimensions: conversational logic, speech recognition accuracy, and Voice Agent conversational quality.
Verloop provides a tiered testing suite designed to take you from initial prompt engineering to real-world telephony simulation.
## Testing Methods
**Best for:** Logic & Flow.
Test your Voice Agent prompts and state transitions instantly via text. View raw **LLM logs** and debug variable extraction without speaking.
**Best for:** ASR & Pronunciation.
Simulate a voice call directly in your browser. Perfect for testing accents and language nuances like **Voice AI Agents for Indian Languages** and code-switching capabilities like Hinglish recognition without incurring telephony costs.
**Best for:** Real-world Latency.
Dial your integrated phone number to experience the agent over actual telecom networks. Essential for final Quality Assurance before go-live.
## Which method should I use?
| Goal | Recommended Method |
| :------------------------------------------------------------ | :----------------------------------------------------- |
| **I just changed the System Prompt.** | **Manual Chat** (Fastest iteration cycle). |
| **I need to check if the AI understands "Lakhs" vs "Likes".** | **Web Call** (Tests the Speech-to-Text configuration). |
| **I want to hear the accent of my Emirati Arabic AI Agent.** | **Web Call** (High-fidelity audio playback). |
| **I need to verify call transfer latency.** | **Phone Call** (Real network conditions). |
# Real Phone Call Testing
Source: https://docs.verloop.io/test-voice-agent/phone-call
Validate end-to-end latency and network performance.
The final stage of validation is the "Real World" test. This involves dialing a phone number integrated with your Recipe to experience the **Voice AI Agent** exactly as a customer would.
## Prerequisites
* You must have a configured number in **Settings > Voice > Phone Numbers**.
* The number must be linked to the Recipe you are testing.
* You need a valid provider integration (Twilio, Exotel, etc.).
## What to Test
### 1. Network Latency
WebRTC (Web Call) is often faster than standard telephony. A real call helps you verify if the **Turn-Taking** speed is acceptable over 4G/5G networks.
### 2. Background Noise
Call from a noisy environment (street, cafe) to test the agent's **Interruption Sensitivity**.
* *Adjustment:* If the agent gets interrupted too easily by noise, go to your Phone Number settings and increase the **Silence Threshold**.
### 3. Dialect Handling on Phone Lines
Phone lines compress audio, which can affect accent recognition.
* **Voice AI Agents for Arabic:** Ensure the distinction between *Khaleeji* and *Levantine* accents holds up over the phone line.
* **Hinglish:** Verify that rapid code-switching is captured accurately despite the lower audio fidelity of standard telephony.
## Analyzing the Call
Since you cannot see live logs during a real phone call:
1. Complete the conversation and hang up.
2. Navigate to the **Conversations** tab in your dashboard.
3. Open the transcript for the call you just made.
4. Review the **Post-Call Insights** and transcript to identify any drop-offs.
# Web Call Testing
Source: https://docs.verloop.io/test-voice-agent/web-call
Simulate high-fidelity voice calls directly from your browser.
Web Call testing bridges the gap between text chat and real telephony. It uses Verloop's web SDK to connect your browser's microphone directly to the **Voice AI Agent**, allowing you to test Speech-to-Text (ASR) and Text-to-Speech (TTS) performance without dialing a phone number.
## Initiating a Web Call
1. Click the **Play Icon** in the Recipe Builder.
2. Select **Test as Webcall**.
3. A configuration popup will appear.
## Configuration Options
You can configure the test in two ways:
### Option 1: Test from Phone Settings
Select an existing phone number from your account. The system will auto-populate the specific **Voice**, **Language**, and **Boosted Keywords** assigned to that line.
* *Best for:* Regression testing an existing live agent.
### Option 2: Custom Configuration
Manually tweak settings to experiment with new accents or languages.
* **Language:** Test how different models handle your script (e.g., switch between *English (India)* and *Hindi*).
* **Voice:** Audition different voices(e.g., *Arjun* vs. *Riya*) to see which tone fits your brand.
* **Boosted Keywords:** Add terms like "UPI" or "IBAN" to test if the ASR accuracy improves.
## Simulating Context (Request Data)
Real calls often come with data (Caller ID, CRM info). You can simulate this in Web Call:
* **Add Variable:** Click **+ Add More** in the test popup.
* **Key/Value:** Enter context like `customer_name: "Rahul"` or `account_type: "Gold"`.
* **Result:** The AI Agent will start the call knowing this context (e.g., *"Hello Rahul, thanks for being a Gold member"*).
## Debugging Web Calls
During the Web Call, the **Chat Interface** remains active.
* **Live Transcript:** Watch the ASR convert your speech to text in real-time.
* **Debug Logs:** If the agent misunderstands you, check the logs to see if it was a transcription error (ASR) or a logic error (LLM).
**Microphone Permissions:** Ensure your browser has permission to access your microphone. If the agent doesn't respond, check your browser's privacy settings.
# Use Cases
Source: https://docs.verloop.io/usecases
Verloop powers millions of calls like yours, every day
Verloop's powerful **Voice AI Agents** help businesses deliver natural, empathetic, and delightful conversations at scale.
Whether you need to reach millions via outbound calls, streamline support, or boost engagement, our AI-driven voice solutions ensure precision, outcome, and empathy, at scale. Our agents are versatile and can cater to a wide range of applications.
Below are some common scenarios where we shine -
## Outbound Voice AI Calling
Take proactive outreach to the next level with personalized, automated calls.
From lead generation and qualification to appointment reminders and feedback collection, our Voice AI Agents engage customers in meaningful ways that drive conversion and outcome.
1. **Lead Qualification** - Move away from long delays because of limited sales agents to reach out to every customer the moment they show interest in the product. Our Voice AI Agents can dial to millions of customers and help you scale like never before.
2. **Appointment Management** - Book, remind, and reschedule appointments with a human-like and 24x7 available AI Agent.
3. **Feedback Collection** - Conduct surveys and gather insights to improve products and services.
## Inbound Support Calls
Transform your inbound support operations by deploying Voice AI agents to handle customer queries, troubleshoot technical issues, and guide users through self-service workflows.
By automating repetitive tasks, you free up human agents to focus on high-value interactions.
1. **24x7, Multi-lingual Support** - Replicate your best agents and help customers with their problems using powerful Voice AI Support Agents.
2. **Issue Resolution** - Understand problems in-depth and provide a solution that delights the customers and makes them a champion of the brand.
3. **Multi-Channel Support** - Verloop Voice AI Agents can leverage conversational channels like WhatsApp to handle the limitations of voice as a medium.
4. **Escalation Management** - Seamlessly transfer complex cases to live agents with full context.
## Industry-Specific Applications
From healthcare to e-commerce, our agents are tailored to address unique challenges across industries:
1. **Voice AI Agents for Retail** - Assist shoppers with product recommendations, item back-in-stock notifications, order tracking, payment, and other support queries.
2. **Voice AI Agents for Banks** - Generate and qualify leads, upsell and cross over calls, process service requests, re-KYC, and answer account-related queries securely.
3. **Voice AI Agents for Fintech** - Handle loan and credit card leads, payment reminders, and collection using outcome-oriented Voice AI Agents.
4. **Voice AI Agents for Healthcare** - Schedule appointments, remind patients of medication schedules, send notification calls, and collect feedback.
5. **Voice AI Agents for Insurance** - Lead generation and qualification, policy recommendation, payment reminders, claim-related queries, and feedback automation.
6. **Other Popular use cases** - Customer onboarding, Employee support, IT Assistance etc.