Handleidingen
Spraakagent
Een agent is zo goed als zijn systeemprompt. Deze pagina laat zien hoe u er een schrijft, geeft u drie kant-en-klare voorbeelden om te kopiëren en behandelt de limieten waarmee u rekening moet houden.
Het nummer van de assistent
Een agent neemt op en belt vanaf het nummer dat u op de detailpagina van de agent aan hem toewijst (in de API het veld numberE164). Een spraaknummer ontvangt en voert gesprekken, maar geen sms. Wilt u dat uw assistent een nummer heeft waarop mensen kunnen bellen en sms'en en van waaruit hij belt en sms verstuurt, bestel dan een nummer voor bellen en sms: een Praags vast nummer dat na registratie bij de operator (meestal binnen 1 werkdag, uiterlijk binnen 48 uur) wordt beantwoord door een agent op de eigen spraakengine van volai. Gesprekken vanaf dit nummer gaan alleen naar Tsjechische nummers (+420) en de sms'jes ervan hebben geen bezorgrapporten. De details staan in de API-documentatie onder Nummer voor bellen en sms.
1Opbouw van systemPrompt
Een goede prompt bestaat uit vier delen. Laat u er één weg, dan loopt de agent vroeg of laat vast en weet hij niet wat hij moet doen - hij valt stil of verzint iets.
- Wie ik ben - een of twee zinnen: bedrijfsnaam, rol, toon. De agent moet deze identiteit al in zijn eerste zin vaststellen.
- Wat ik kan - de concrete taken die de agent echt afhandelt (bestellingen, afspraken, informatie) - niet een vaag "ik help met alles".
- Wat ik NOOIT doe - de grenzen: wat de agent nooit mag verzinnen, beloven of onthullen. Dit deel wordt het vaakst overgeslagen, terwijl juist dit het verschil maakt tussen een agent die prijzen verzint en een agent die eerlijk zegt "dat weet ik niet, bel naar...".
- Hoe ik het gesprek afsluit - wanneer en hoe het gesprek wordt afgesloten (samenvatting, afscheid) en wat te doen als de beller iets vraagt wat buiten het bereik valt.
Langere instructies vertragen het antwoord met ongeveer een tiende seconde per tweeduizend tekens - de agenteditor waarschuwt hiervoor vanaf 3000 tekens. De harde limiet is 6000 tekens.
Drie volledige voorbeelden - kopieer ze en pas ze aan uw situatie aan:
Receptionist van een café
Je bent de spraakreceptionist van Café Nula in Vinohrady. Je praat
rustig, vriendelijk en kort - zoals een ervaren medewerker, niet als een
robot.
WAT JE KUNT
- Bestellingen aannemen om af te halen (koffie, thee, croissants,
broodjes).
- De actuele openingstijden doorgeven: maandag tot en met vrijdag
8.00-18.00 uur, in het weekend 9.00-15.00 uur.
- Aan het einde van een bestelling die helemaal herhalen en het
afhaaltijdstip bevestigen (minimaal 15 minuten vanaf nu).
WAT JE NOOIT DOET
- Nooit prijzen of producten verzinnen die niet op de kaart staan -
zeg dat het personeel de exacte prijs ter plaatse bevestigt.
- Nooit bezorging beloven, het café bezorgt niet.
- Je nooit voordoen als mens wanneer een beller dat rechtstreeks
vraagt - zeg dat je de spraakassistent van het café bent.
HOE JE HET GESPREK AFSLUIT
Vat de bestelling en het afhaaltijdstip samen, wens de beller een fijne
dag en beëindig het gesprek. Wil de beller iets wat je niet kunt
afhandelen (klachten, catering), zeg dan dat hij of zij tijdens de
openingstijden opnieuw kan bellen en rechtstreeks met de eigenaar kan
spreken.Tevredenheidsenquête
Je belt namens de webwinkel Botanika voor een korte
tevredenheidsenquête na een recente bestelling. Je bent beleefd, komt
direct ter zake en rekt het gesprek niet onnodig op.
WAT JE KUNT
- Vragen of de klant even tijd heeft voor drie korte vragen.
- Vraag 1: hoe tevreden is de klant over de bestelling, op een schaal
van 1 tot 5.
- Vraag 2: is het pakket op tijd aangekomen?
- Vraag 3: is er iets wat wij kunnen verbeteren?
- De antwoorden onthouden en aan het einde van het gesprek kort
samenvatten.
WAT JE NOOIT DOET
- Nooit aandringen bij een klant die weigert of zegt geen tijd te
hebben - neem direct beleefd afscheid.
- Nooit klachten of retouren afhandelen - die horen bij de
klantenservice, waarvan je het nummer op verzoek kunt voorlezen.
- Nooit kortingen of coupons aanbieden, daartoe heb je geen bevoegdheid.
HOE JE HET GESPREK AFSLUIT
Bedank de klant voor de tijd en de feedback en wens een fijne dag. Zegt
de klant op enig moment niet verder te willen, beëindig het gesprek dan
direct beleefd en stel geen vragen meer.Balie / portier
Je bent de spraakbalie van Nordwex, een kantoorgebouw in
Pankrác. Koeriers, bezoekers en leveranciers bellen dit nummer.
WAT JE KUNT
- Uitzoeken wie er belt en waarom (een koerier met een pakket, een
bezoeker voor een afspraak, een leverancier).
- Van een bezoeker de naam en de persoon met wie de afspraak is
noteren, en zeggen dat hij of zij zich moet melden bij de receptie op
de begane grond en daar moet wachten tot iemand komt.
- Een koerier vragen het pakket bij de receptie achter te laten en de
bedrijfsnaam en de ontvanger erop te schrijven.
- Een kort bericht aannemen wanneer degene voor wie gebeld wordt nu niet
bereikbaar is.
WAT JE NOOIT DOET
- Nooit privé-mobiele nummers van medewerkers geven - bied aan door te
verbinden met de receptie of een bericht aan te nemen.
- Nooit iemand "alleen naar boven" laten gaan - alle bezoekers gaan via
de receptie.
- Nooit vertellen wie er op dit moment in het gebouw is of wanneer -
zeg dat men dat bij de receptie moet navragen.
HOE JE HET GESPREK AFSLUIT
Herhaal wat is afgesproken (bericht, wachten bij de receptie,
doorverbinden), wens de beller een fijne dag en beëindig het gesprek.2Sjablonen per branche
Wilt u geen prompt van nul schrijven? De website heeft kant-en-klare sjablonen voor zes branches (tandartspraktijk, autogarage, restaurant, webwinkel, makelaardij, ambachtslieden) - een volledige systeemprompt, een voorbeelddialoog en een voorbeeld van wat zo'n receptionist kost. Kopieer en pas aan, net als bij de voorbeelden hierboven.
Sjablonen per branche bekijken
3firstMessage
firstMessage is de eerste zin die de klant hoort - direct nadat hij bij een inkomend gesprek opneemt, of direct nadat de gebelde opneemt bij een uitgaand gesprek.
- Kort, gesproken Nederlands - zoals iemand het zou zeggen, niet zoals hij een e-mail zou schrijven.
- Zeg meteen wie of wat er belt of opneemt - de klant moet binnen drie seconden weten met wie hij praat.
- Eindig met een open vraag ("waarmee kan ik u helpen", "heeft u even tijd") - geen lang betoog.
- Lees de zin hardop voor - tekst die op papier goed oogt, kan gesproken stroef klinken.
- Stel u bij uitgaande gesprekken direct voor en noem de reden van het gesprek - mensen nemen onbekende nummers met argwaan op.
4Tools
Een tool is het adres van uw API dat de agent midden in een gesprek aanroept en waarvan hij het antwoord direct in zijn spraak gebruikt. Zonder tool kan de agent alleen praten; met een tool kan hij een bestelling controleren, een vrij tijdstip zoeken of een afspraak vastleggen.
Tools maakt u aan in het portaal op /agent/nastroje (of via POST /v1/tools) en zet u daarna voor een agent aan met een selectievakje op diens detailpagina (in de API het veld toolIds). Een tool hoort bij het account, niet bij een agent - dezelfde tool kan door meerdere agenten worden gebruikt. U geeft vier dingen op:
- Naam - een leesbare naam ("Bestelling controleren"). De naam die het model ziet, wordt er automatisch van afgeleid (
overit_objednavku) en onder het veld getoond. - Wanneer de agent de tool gebruikt - het enige waarop het model beslist of het de tool aanroept. Schrijf het als instructie: "Gebruik dit wanneer de beller vraagt waar zijn bestelling is."
- Adres en methode - alleen
https, openbaar bereikbaar.GETstuurt parameters in de querystring,POSTin de JSON-body. Daarnaast headers, meestalAuthorization. - Parameters - bij elke parameter geeft u aan waar de waarde vandaan komt: het model haalt hem uit het gesprek, het nummer van de beller of het gebelde nummer wordt automatisch ingevuld, of het is een vaste waarde.
Zo ziet het verzoek eruit dat tijdens het gesprek bij uw endpoint aankomt:
POST https://api.yourapp.com/orders
Content-Type: application/json
Authorization: Bearer your_key
{
"order_number": "A-42",
"phone": "+420777123456"
}En dit is het antwoord waarmee de agent kan werken - een korte JSON-payload die hij in één zin kan omzetten:
{
"status": "shipped",
"delivery": "morgenochtend"
}Probeer de tool uit voordat u hem opslaat
Het formulier heeft een knop Uitproberen: die stuurt een echt verzoek met voorbeeldwaarden naar het opgegeven adres en toont de status, de reactietijd en het begin van het antwoord. Er wordt niets opgeslagen. Het loont de moeite - een endpoint dat traag antwoordt, hoort de beller tijdens het gesprek als stilte.
Limieten: maximaal 10 tools per account, 10 parameters en 5 headers per tool, time-out voor het antwoord van 5 tot 30 seconden (standaard 20) - zo lang wacht de agent precies, en zegt hij ondertussen een overbruggingszin zodat de beller geen stilte hoort. Headerwaarden tonen wij u alleen gemaskeerd terug (Bear***) - de volledige waarde kan niet meer uit het account worden uitgelezen.
Bevestigingspoort voor een tool die iets verstuurt
Zet voor een tool met een neveneffect (verstuurt een sms, maakt een aanvraag aan) de bevestigingspoort aan met het veld requireConfirmation: true (POST en PATCH /v1/tools, in MCP create_tool en update_tool). De spraakengine van volai voert de tool dan alleen uit wanneer het laatste antwoord van de beller duidelijk ja zegt. Bij een onduidelijk antwoord ('Hallo?', 'Ja?', 'Ja, maar later') wordt de tool niet uitgevoerd, krijgt de agent de opdracht opnieuw te vragen en wordt een poging om het gesprek in dezelfde ronde te beëindigen tegengehouden. Standaard staat dit uit.
Het geldt alleen voor een agent op de eigen engine van volai in het Tsjechisch of Slowaaks: de engine kent alleen in die twee talen toestemmingswoorden (voor en, de en pl zou ze zelfs een duidelijk 'Ja' blokkeren), dus het veld wordt genegeerd voor een agent in een andere taal en ElevenLabs gebruikt het niet. Een tool hoort bij het account en wordt door meerdere agenten gedeeld, dus opslaan wordt nooit geweigerd vanwege de taal. De poort leest alleen het laatste antwoord van de beller en kent de vraag van de agent niet: ze vangt onduidelijke toestemming op, niet elk 'Ja' dat op een andere vraag is gezegd. Een wijziging aan een tool bereikt een agent die al op de engine draait pas wanneer die agent de volgende keer wordt opgeslagen of gepubliceerd - het bewerken van een tool herschrijft agenten nooit zelf. Bij een lopende campagne maakt de route uit: de geteste concept-versie ongewijzigd opnieuw publiceren behoudt de testmarkering, zodat de taak doorloopt, nu met een poort die de test niet heeft gedekt; een direct opslaan van de agent (PATCH /v1/agents/{id}) wist de testmarkering en stopt de taak met agent_version_changed. Plan het aanzetten van de poort buiten een lopende campagne en test de campagne daarna opnieuw.
In het portaal zet u de poort aan met Duidelijke toestemming van de beller vereisen in de tooleditor (/agent/nastroje). Dezelfde regels gelden als hierboven beschreven; voor een agent die al op de engine draait, bereikt de wijziging hem via de knop Publiceren op zijn detailpagina.
5Doorverbinden naar een persoon
De agent kan het gesprek doorverbinden naar uw nummer wanneer de beller om een persoon vraagt of tegen iets aanloopt wat de agent niet kan oplossen. Dit zet u aan op de detailpagina van de agent (in de API het veld transferTo); de voorwaarde schrijft u als instructie aan het model in transferCondition. Zonder voorwaarde gebruiken wij een standaardzin.
Op de eigen spraakengine van volai
Op de eigen spraakengine van volai wordt het doorverbinden overbrugd: de agent zegt dat hij doorverbindt, de beller hoort een beltoon en de persoon op uw nummer ziet het nummer van de agent. Zodra u opneemt, valt de agent stil en loopt het gesprek tussen u beiden verder via volai. Hangt een van u op, dan eindigt het gesprek voor beide partijen. Neemt u niet binnen 25 seconden op, dan verontschuldigt de agent zich bij de beller, biedt aan een bericht aan te nemen en gaat verder.
Twee dingen die u vooraf moet weten
Wij geven geen samenvatting van het gesprek door aan de persoon. De beller hoort dat hij wordt doorverbonden, maar de persoon aan de andere kant neemt de beller rechtstreeks aan - er is geen "warme overdracht" waarbij de agent eerst een toelichting geeft; het telefoonnetwerk ondersteunt dat niet. Houd er in uw instructies rekening mee: laat de agent tegen de beller zeggen dat hij zijn verhaal mogelijk opnieuw moet doen.
Een doorverbinding is een gewoon uitgaand gesprek en wordt ook zo gefactureerd: 0.92 CZK/min vanaf opnemen tot ophangen, zonder agenttoeslag (de agent zit niet meer op dit deel). U herkent het in de gespreksgeschiedenis aan het type transfer, en de detailpagina van het oorspronkelijke gesprek heeft een kaart Doorverbinding met een link naar dit deel. Het inkomende deel loopt door en wordt apart gefactureerd.
Het standaardplatform (ElevenLabs)
Op het standaardplatform (ElevenLabs) werkt doorverbinden niet - de SIP-operator rondt het nooit af. Nadat u doorverbinden hebt ingeschakeld, probeert volai de agent direct na het opslaan naar zijn eigen spraakengine te verplaatsen. De poging kan zijn gepauzeerd, de engine kan niet beschikbaar zijn of de overstap kan mislukken; controleer het teruggegeven veld provider om na te gaan of de agent echt op de engine staat. Zolang hij op ElevenLabs blijft, werkt doorverbinden niet. Een geslaagde overstap kan de stem van de agent veranderen; de standaardstem van de engine is Milena.
U kunt niet doorverbinden naar uw eigen volai-nummer - het gesprek zou in een lus op zichzelf terugkomen totdat het tegoed op is. Premium-tariefnummers (90x) zijn om dezelfde reden verboden.
Een agent die een nummer voor bellen en sms gebruikt, verbindt alleen door naar Tsjechische nummers (+420): gesprekken vanaf dat nummer gaan alleen naar Tsjechische nummers, dus een doorverbindnummer buiten +420 wordt voor zo'n agent niet opgeslagen en de API geeft destination_not_allowed terug.
6Gegevens uit gesprekken
In plaats van het volledige transcript te lezen, kunt u precies aangeven wat u uit een gesprek wilt hebben - een naam, een aantal artikelen, of het dringend is. De agent vult het na het gesprek in en u krijgt het terug als JSON.
Elk veld heeft een sleutel, een type en een beschrijving. Maximaal tien velden per agent:
- Sleutel (
key) - kleine letters, cijfers en underscores, maximaal 40 tekens - moet met een kleine letter beginnen. Onder deze naam vindt u de waarde in het resultaat. - Type (
type) -string,numberofboolean. - Beschrijving (
description) - precies wat het model eruit moet halen, 5 tot 500 tekens. Zeg er ook bij wat het moet doen wanneer het gesprek het niet noemt. - Opties (
enumValues) - een optionele lijst, alleen voor tekstvelden. Het model kiest dan alleen uit de aangeboden waarden, zodat het resultaat direct kan worden gefilterd. Maximaal 20 opties, elk maximaal 60 tekens.
curl -X PATCH "$VOLAI_URL/v1/agents/ag_kx91fa2b" \
-H "Authorization: Bearer vk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"dataFields": [
{"key": "name", "type": "string", "description": "De naam van de beller, zoals die is genoemd. Leeg laten als die niet is genoemd."},
{"key": "coffee_count", "type": "number", "description": "Hoeveel koffies de beller heeft besteld."},
{"key": "urgency", "type": "string", "description": "Hoe dringend het verzoek was.", "enumValues": ["low", "normal", "high"]}
]
}'Het resultaat verschijnt op drie plaatsen: op de detailpagina van het gesprek in het portaal als kaart "Vastgelegde gegevens", in het veld data van het gesprek (zowel GET /v1/calls als GET /v1/calls/{id}) en in de body van de webhook call.completed.
{
"call": {
"id": "c_8f2ac1d4",
"status": "completed",
"hasRecording": true,
"data": {
"name": "Jan de Vries",
"coffee_count": 2,
"urgency": "normal"
}
}
}Een waarde null betekent "niet genoemd in het gesprek" - hetzelfde geldt als het model een lege string teruggeeft. Heeft een agent geen velden ingesteld, dan staat de sleutel data helemaal niet in het antwoord.
7Doel van de agent en beoordeling
Een doel is één zin die beschrijft wat het gesprek moet opleveren - "een bezichtiging inplannen", "nagaan of de klant interesse heeft in het aanbod". U vult het in bij het veld "Doel van de agent" in het portaal (bij het aanmaken van de agent of later bij het bewerken), of via de REST-API en MCP met het veld goal op POST/PATCH /v1/agents en create_agent/update_agent (maximaal 300 tekens).
Het doel gaat naar de agent als criterium voor de beoordeling van het gesprek: nadat het gesprek is afgelopen, leest een model het transcript langs dat doel en besluit of het doel is bereikt, niet is bereikt of uit het gesprek niet kan worden vastgesteld. U ziet het resultaat bij het gesprek in het portaal - op de detailpagina van het gesprek en in de gesprekslijst - en ook in de e-mail na het gesprek, naast de samenvatting.
Het is een inschatting van een model, geen feit
De beoordeling leest alleen het transcript van het gesprek, niet wat er daarna gebeurde (of de klant echt is langsgekomen). Een eerlijke kanttekening: het doel van de agent (goal) kunt u via de REST-API en MCP instellen en uitlezen, maar het BEOORDELINGSRESULTAAT van een specifiek gesprek blijft alleen in het portaal en de e-mail na het gesprek - GET /v1/calls en get_call geven het niet terug. De beoordeling draait bovendien alleen voor agenten op de nieuwe spraakengine van volai - op welk platform een agent draait, ziet u in het veld provider (GET /v1/agents, list_agents en de detailpagina van de agent in het portaal); volai regelt de overstap. Oudere agenten die op het oorspronkelijke platform blijven, krijgen dit pas nadat ze naar deze engine zijn verplaatst.
Wat de agent weet (achtergrondmateriaal)
Naast de instructies kunt u de agent achtergrondmateriaal meegeven - openingstijden, een prijslijst, een FAQ. Vul het in bij het veld "Wat de agent weet" in het portaal (sectie Geavanceerd) of in het veld knowledge op POST/PATCH /v1/agents. De tekst wordt achter de prompt geplaatst, past in 20000 tekens en een PATCH met een lege waarde wist hem. In tegenstelling tot een tool verandert dit materiaal tijdens een gesprek nooit - alles wat wel verandert (status van een bestelling, vrije tijdstippen) hoort in een tool, niet hier.
8E-mail na het gesprek
Nadat een gesprek met de agent is afgelopen, stuurt volai u een e-mail met de samenvatting en een link naar de gespreksdetails in het portaal - dezelfde samenvatting die u in de API ziet in het veld summary. Hij wordt verstuurd voor agenten op de eigen spraakengine van volai (provider: "engine"); een agent op ElevenLabs (provider: "elevenlabs") krijgt hem nog niet.
De schakelaar "E-mail na elk gesprek" staat op de pagina Instellingen - uitzetten stopt de e-mail meteen voor het hele account. Om hem voor één agent uit te zetten, gebruikt u het selectievakje "Mail mij na elk gesprek" op de detailpagina van die agent (in de API het veld notifyEmail: false). U krijgt hooguit één e-mail per gesprek, en een gesprek zonder iets te melden (geen samenvatting, geen verzamelde gegevens en geen reden van beëindiging) veroorzaakt er geen.
9Opnames
Gesprekken van agenten worden opgenomen en u kunt ze direct afspelen vanaf de detailpagina van het gesprek in het portaal - klikken in het transcript springt naar het bijbehorende punt in de opname. Om de opname te downloaden of elders af te spelen, gebruikt u GET /v1/calls/{id}/recording (met dezelfde API-sleutel) - het formaat volgt de header content-type van het antwoord: audio/mpeg (MP3) voor een agent op ElevenLabs, nu audio/ogg voor een agent op de engine van volai. Het veld hasRecording laat zien of een gesprek een opname heeft.
- Wij bewaren ze 90 dagen na het gesprek en verwijderen ze daarna. Het transcript en de samenvatting worden apart bewaard en niet samen met de opname verwijderd. Na negentig dagen geeft het endpoint
recording_expiredterug. - U kunt het per agent uitzetten met een schakelaar op de detailpagina van de agent of het veld
recordCalls: falsein de API. Voor gesprekken die vanaf dat moment beginnen, wordt niets opgenomen; een gesprek dat al overgaat of bezig is, volgt de instelling van het moment waarop het begon (een uitgaand gesprek van het moment waarop het werd gebeld) en wordt dus nog wel opgenomen. - Alleen gesprekken die door de ingebouwde agent worden afgehandeld, worden opgenomen. Een directe brug tussen twee nummers, een relay-gesprek en een SIP-gesprek worden nooit opgenomen.
De beller informeren is uw verantwoordelijkheid
Een gesprek opnemen is het verwerken van persoonsgegevens. De agent meldt dit niet uit zichzelf aan de beller - wilt u dat wel, zet dan "De beller melden dat het gesprek wordt opgenomen" aan bij de agent (recordingNotice: true in de API) en volai voegt een korte zin aan het eerste bericht van de agent toe waarin staat dat het gesprek wordt opgenomen. U kunt dit ook zelf in de openingszin opnemen. Zorgen dat de melding aan de wet voldoet voor uw situatie, is uw verantwoordelijkheid als verwerkingsverantwoordelijke.
Elke API-fout bevat cause (wie het oplost) en action (wat te doen) - zie Foutformaat in de REST API-referentie.
10Limieten
- Een gesprek duurt maximaal 10 minuten (600 seconden), daarna beëindigt de agent het zelf.
- Als de beller 20 seconden stil blijft, beschouwt de agent dat als het einde van het gesprek en hangt op.
- De agent reageert ongeveer 1 seconde nadat u klaar bent met spreken - in het echte verkeer varieert dit iets met de belasting.
11Talen
De agent kan vijf talen spreken - Tsjechisch (de standaard), Slowaaks, Engels, Duits en Pools - de taal stelt u in op de detailpagina van de agent (het veld language in POST/PATCH /v1/agents, create_agent/update_agent). Een eigen stem per taal (Cartesia) is alleen beschikbaar voor een agent op de eigen engine van volai (zie het hoofdstuk Stemmen hieronder) - een agent die op ElevenLabs blijft, spreekt de gekozen taal met de stem Anet.
12Testgesprek
De knop "Bel mij voor een test" op de detailpagina van de agent in het portaal laat de agent een echt gesprek voeren met het nummer dat u invoert - een snelle controle hoe hij klinkt en hoe hij op uw systeemprompt reageert, zonder zijn nummer zelf te hoeven bellen.
Wordt gefactureerd als een gewoon uitgaand gesprek met de agent, inclusief agenttoeslag (zie het hoofdstuk Prijzen hieronder) - geen korting, geen speciaal tarief.
Een agent op de eigen spraakengine van volai kan ook zonder eigen telefoonnummer een testgesprek voeren - het gaat uit via de gedeelde volai-lijn, dus de gebelde ziet het volai-nummer op zijn scherm, niet dat van de agent. Een agent op ElevenLabs zonder eigen nummer kan geen testgesprek starten totdat u hem een nummer toewijst.
Maximaal 3 pogingen voor een testgesprek per account per dag, over alle agenten heen - elke poging die echt tot stand kwam telt mee, ook als niemand opnam; een poging die mislukte voordat er verbinding was (onvoldoende tegoed, bezette lijn) telt niet mee voor de limiet. Gewone gesprekken via POST /v1/calls hebben zo'n strengere limiet niet.
13Stemmen
De keuze van de aanbieder bij het aanmaken kent drie toestanden: useForOutboundTasks: true in POST /v1/agents of create_agent kiest de eigen spraakengine van volai, false start op ElevenLabs, ook met doorverbinden, en weglaten gebruikt de standaard van de implementatie, die afhangt van de beschikbaarheid van de engine, het inschakelen ervan en de ingestelde talen. Alleen cs of sk kiezen garandeert de engine niet; wanneer de standaard van de engine is uitgeschakeld, start het aanmaken op ElevenLabs. Wanneer een expliciet false de standaard van de engine voor de taal overschrijft, bevat het antwoord bij het aanmaken de waarschuwing elevenlabs_by_explicit_choice, dus maak een agent die alleen voor inkomende gesprekken is bedoeld aan zonder dit veld. Wanneer u transferTo inschakelt bij een ElevenLabs-agent, probeert volai hem na het opslaan naar de engine te verplaatsen. De poging kan zijn gepauzeerd, niet beschikbaar zijn of mislukken, controleer het resultaat dus met een vervolg-GET /v1/agents/{id} voor REST of in de teruggegeven agent voor MCP. Het veld provider zegt op welk platform een agent draait; doorverbinden werkt niet zolang hij op ElevenLabs blijft. Een geslaagde overstap kan zijn stem veranderen. Dezelfde poging volgt op een wijziging van language bij een ElevenLabs-agent van een taal waarin nieuwe agenten op ElevenLabs starten (nu en, de, pl) naar een taal waarin ze op de engine starten (cs, sk); de agent krijgt dan de standaard-enginestem van de nieuwe taal (Milena, Katarina). Een wijziging tussen cs en sk verplaatst niets. Anderszins verloopt het verplaatsen tussen platforms via de support van volai. ElevenLabs accepteert uit de catalogus alleen katty of een ruwe ElevenLabs-stem-id; andere catalogusstemmen vereisen de engine.
voiceId bij create_agent/update_agent (en het gelijknamige veld in POST/PATCH /v1/agents) kiest de stem van de agent. De ongefilterde lijst GET /v1/voices (MCP list_voices zonder argument provider) toont de ElevenLabs-stem katty niet - REST geeft hem pas terug met ?provider=elevenlabs, MCP met het argument provider: "elevenlabs". Cartesia-stemmen (Milena, Jan en de stemmen voor andere talen) zijn voor agenten op de eigen engine van volai, Katty voor agenten op ElevenLabs (de opmerking hierboven behandelt op welk platform een agent draait). De oudere stem anet blijft alleen bij agenten die hem al hebben - sinds 12 sep 2026 wijst ElevenLabs hem niet meer toe aan nieuwe agenten en volai wijst zo'n verzoek af met een toelichting. Bij het aanmaken met een expliciete useForOutboundTasks: true wordt een herkende catalogusstem die op de engine niet beschikbaar is, waaronder katty, vervangen door de standaardstem van de engine voor de gekozen taal; wanneer een weggelaten veld de engine via de standaard van de implementatie kiest, wordt dezelfde incompatibele stem afgewezen. Een ruwe ElevenLabs-id wordt door de engine altijd afgewezen. Zonder voiceId krijgt de agent de standaardstem van zijn aanbieder - Milena op de engine, de stem van het sjabloon (Katty) op ElevenLabs.
De catalogus biedt per taal minstens één vrouwelijke en één mannelijke stem (voor het Tsjechisch nu vier): cs: Milena, Jan, Tereza, Marek; sk: Katarina, Peter; en: Skylar, Daniel; de: Alina, Lukas; pl: Ewa, Kacper; nl: Ariel, Alexander; pt: Christine, Filipe; sl: Sarah, Daniel; ro: Mikidutza, Oliver; da: Isabella, Søren; et: Alice, Chris; lv: Matilda, George; bg: Yoana, Peter K; fi: Soili, Jussi; el: Crhysa, Iordanis; fr: Natasha, Max; it: Rossana, Marco; hu: Zsófia, Gábor; lt: Sarah, Daniel; sv: Sanna, Filip. Het portaal biedt alleen stemmen in de gekozen taal van de agent aan - ze wisselen samen (zie het hoofdstuk Talen hierboven).
Elke stem in de tabel hoort bij de eigen spraakengine van volai. Voor een agent op ElevenLabs wijst de API ze af met een 400 - die agent accepteert alleen katty (die de ongefilterde lijst niet toont) en een ruwe ElevenLabs-stem-id.
| id | Beschrijving | Voorbeeld |
|---|---|---|
| milena | Milena - The default volai voice - calm and natural, a good fit for most agents. | |
| jan | Jan - The male counterpart to Milena - matter-of-fact, easy-to-follow delivery. | |
| tereza | Tereza - The second female voice - professional, well-structured delivery. | |
| marek | Marek - The second male voice - calm, resonant delivery for longer calls. | |
| katarina | Katarina - Slovak female voice - calm, natural delivery. | |
| peter | Peter - Slovak male voice - matter-of-fact, easy-to-follow delivery. | |
| skylar | Skylar - English female voice - calm, friendly delivery. | |
| daniel | Daniel - English male voice - matter-of-fact, confident delivery. | |
| alina | Alina - German female voice - calm, warm delivery. | |
| lukas | Lukas - German male voice - matter-of-fact, easy-to-follow delivery. | |
| ewa | Ewa - Polish female voice - calm, natural delivery. | |
| kacper | Kacper - Polish male voice - matter-of-fact, confident delivery. | |
| ariel | Ariel - Dutch female voice - natural conversational delivery. | |
| alexander | Alexander - Dutch male voice - warm, natural delivery. | |
| christine | Christine - Portuguese female voice - relaxed conversational delivery. | |
| filipe | Filipe - Portuguese male voice - natural, expressive delivery. | |
| mikidutza | Mikidutza - Romanian female voice - clear, friendly delivery. | |
| oliver | Oliver - Romanian male voice - matter-of-fact, clear delivery. | |
| isabella | Isabella - Danish female voice - warm, calm delivery. | |
| soren | Søren - Danish male voice - clear, confident delivery. | |
| yoana | Yoana - Bulgarian female voice - fresh, engaging delivery. | |
| peterk | Peter K - Bulgarian male voice - warm, smooth delivery. | |
| soili | Soili - Finnish female voice - neutral, light delivery. | |
| jussi | Jussi - Finnish male voice - strong, lively delivery. | |
| crhysa | Crhysa - Greek female voice - professional, lively delivery. | |
| iordanis | Iordanis - Greek male voice - natural conversational delivery. | |
| natasha | Natasha - French female voice - soft, conversational delivery. | |
| max | Max - French male voice - charismatic, friendly delivery. | |
| rossana | Rossana - Italian female voice - warm conversational delivery. | |
| marco | Marco - Italian male voice - charismatic, friendly delivery. | |
| zsofia | Zsófia - Hungarian female voice - soft, inviting delivery. | |
| gabor | Gábor - Hungarian male voice - warm, natural, confident delivery. | |
| sanna | Sanna - Swedish female voice - direct, natural delivery. | |
| filip | Filip - Swedish male voice - energetic, expressive delivery. | |
| sarah-sl | Sarah - Slovenian female voice - calm, confident delivery (multilingual voice, the model drives the pronunciation). | |
| daniel-sl | Daniel - Slovenian male voice - steady, broadcaster-style delivery (multilingual voice, the model drives the pronunciation). | |
| alice-et | Alice - Estonian female voice - clear, engaging delivery (multilingual voice, the model drives the pronunciation). | |
| chris-et | Chris - Estonian male voice - down-to-earth, charming delivery (multilingual voice, the model drives the pronunciation). | |
| matilda-lv | Matilda - Latvian female voice - knowledgeable, professional delivery (multilingual voice, the model drives the pronunciation). | |
| george-lv | George - Latvian male voice - warm, captivating delivery (multilingual voice, the model drives the pronunciation). | |
| sarah-lt | Sarah - Lithuanian female voice - calm, confident delivery (multilingual voice, the model drives the pronunciation). | |
| daniel-lt | Daniel - Lithuanian male voice - steady, broadcaster-style delivery (multilingual voice, the model drives the pronunciation). |
voiceId accepteert ook een ruwe ElevenLabs-ID, maar alleen voor een agent op het standaardplatform (provider: "elevenlabs"). Gebruik voor een agent op de engine een stem-id uit de catalogus. Een onbekende waarde of een waarde die niet past bij de aanbieder geeft een fout met de geldige opties.
14Statistieken
Het detailscherm van de agent in het portaal toont het aantal beantwoorde gesprekken, de gemiddelde en langste duur en hoeveel er in de afgelopen 30 dagen waren - hiervoor is geen aparte API, dezelfde cijfers kunt u zelf berekenen uit GET /v1/calls.
15Prijzen
De spraakagent wordt per seconde gefactureerd bovenop de gesprekskosten - zonder afronding naar hele minuten. Tarieven zijn exclusief btw, net als de hele prijslijst.
| Richting | Gesprek | Agent | Totaal |
|---|---|---|---|
| Uitgaand | 0.92 CZK/min (~EUR 0.04) | 2.50 CZK/min (~EUR 0.10) | 3.42 CZK/min (~EUR 0.14) |
| Inkomend | 0.50 CZK/min (~EUR 0.02) | 2.50 CZK/min (~EUR 0.10) | 3.00 CZK/min (~EUR 0.13) |
De volledige prijzen, met voorbeelden, staan op de Prijzenpagina.
Liever uw eigen ElevenLabs, Vapi of een ander platform? Met uw eigen agent kunt u de agenttoeslag vermijden - zie Eigen agent meenemen.
16Transcripten en webhook
Zodra een gesprek is afgelopen, haalt u het transcript en de samenvatting op via GET /v1/calls/{id} (velden transcript en summary) - of volai kan ze als gebeurtenis naar uw URL sturen call.completed, zodra ze klaar zijn. Het transcriptformaat, de verificatie van handtekeningen en de foutafhandeling staan op de Webhooks-pagina.
Wilt u niet op een webhook wachten of de API pollen? In het portaal toont de detailpagina van elke agent ook een lijst met recente gesprekken, met het transcript direct ter plekke leesbaar.
17Spraakengine van volai
Sommige agenten draaien nu op de eigen spraakengine van volai in plaats van op ElevenLabs. De overstap wijzigt de routering van gesprekken en de volledige configuratie van de agent gaat mee - instructies, openingszin, gegevensvelden, gespreksdoel, kennis, tools en doorverbinden. Wat verandert en wat niet:
- Stemmen een agent met een gekozen ElevenLabs-stem (Katty, of de oudere Anet) krijgt na de overstap de standaardstem van de engine voor zijn taal - Milena voor het Tsjechisch. De engine biedt geen ElevenLabs-stem als hoofdstem, ElevenLabs blijft alleen als reserve bij een storing van Cartesia. In de instellingen van de agent kunt u dan elke andere catalogusstem voor de taal van de agent kiezen, voor het Tsjechisch bijvoorbeeld Jan. Een stem die de agent al uit de catalogus van de engine heeft, blijft ongemoeid.
- Reactietijd blijft gelijk aan die van ElevenLabs - ongeveer 1 seconde nadat u klaar bent met spreken.
- Opnames ongewijzigd - nog steeds 90 dagen bewaard en op dezelfde manier uit te zetten op de detailpagina van de agent.
- Melding van opname ongewijzigd - met de opnamemelding aan voor de agent (`recordingNotice`) voegt volai ook hier een korte zin aan het eerste bericht van de agent toe waarin staat dat het gesprek wordt opgenomen (zie het onderdeel Opnames hierboven). Zonder die optie, of met opname uit, wordt de zin helemaal niet toegevoegd.
- Melding van AI ongewijzigd - de openingszin gaat precies zoals u hem schreef naar de aanbieder. Wij dwingen dit niet af: als de zin niet zegt dat de beller met een digitale assistent spreekt, waarschuwen wij u alleen (EU AI Act, artikel 50), opslaan lukt nog steeds. De melding blijft bij beide aanbieders uw verantwoordelijkheid.
- Tools en doorverbinden ze gaan mee met de agent - een geslaagde overstap stuurt de engine zijn tools en zijn ingestelde doorverbinding naar een persoon, zodat u ze niet opnieuw hoeft in te stellen. Op de eigen spraakengine van volai werkt doorverbinden overbrugd (zoals in het onderdeel Doorverbinden naar een persoon hierboven) - de brug is in het dagelijkse gebruik geverifieerd en het portaal toont het volledige doorverbindformulier voor een agent op de engine. Doorverbinden inschakelen bij een agent op het standaardplatform (ElevenLabs) start na het opslaan direct een overstappoging; controleer het resultaat in `provider`, want een gepauzeerde poging, een niet beschikbare engine of een fout kan de agent op ElevenLabs laten, waar doorverbinden niet werkt. Een geslaagde overstap kan zijn stem veranderen naar de standaard van de engine. Bulkmigratie van nummers in golven slaat daarom agenten met ingesteld doorverbinden over.
- Detectie van voicemail bij uitgaande gesprekken alleen de eigen spraakengine van volai kan dit - binnen enkele seconden na het opnemen herkent ze een voicemail in plaats van een persoon en markeert die, afhankelijk van de instelling, alleen, hangt op of wacht op de piep en leest een bericht voor. Instelbaar op de agentdetails (alleen engine-agenten), via de API en MCP in het veld `voicemail`. De gesprekslijst toont dan "Voicemail beantwoord" voor een uitgaand gesprek met een voicemail in plaats van de gebruikelijke uitkomst. Het standaardplatform (ElevenLabs) heeft zo'n detectie niet.
- Herinnering bij stilte alleen de eigen spraakengine van volai speelt die af - als de beller een tijdje stil blijft, vraagt de agent één keer of hij of zij er nog is. De instelling (aan/uit, 3 tot 25 seconden) wordt voor beide aanbieders opgeslagen - voor een agent op het standaardplatform (ElevenLabs) is het veld op de agentdetails grijs en is de waarde pas te horen zodra de agent naar de engine overstapt. Uw eigen herinneringszin (`silencePromptText`, maximaal 80 tekens, in plaats van de standaardherinnering voor de taal van de agent, die in het Nederlands "Bent u er nog?" is) wordt op dezelfde manier opgeslagen.
- Bescherming van de eerste zin alleen de eigen spraakengine van volai kan dit, en alleen bij uitgaande gesprekken: terwijl de eerste zin wordt afgespeeld (het aantal seconden dat u instelt, 0 tot 20), onderbreekt een korte reactie van degene die opneemt ("Hallo?", "Ja?") hem niet: een antwoord zonder onderbrekend woord (bijvoorbeeld stop, nee, wacht) wordt in het beschermde venster genegeerd, onderbreekt de zin dus niet, staat niet in het transcript en de agent reageert er niet op, terwijl een onderbrekend woord de zin altijd onderbreekt. De onderbrekende woorden volgen de taal van de agent: een Engelstalige agent wordt onderbroken door stop, no, wait of hold. Het veld `firstMessageProtectSecs` wordt voor beide aanbieders opgeslagen zonder afgedwongen standaard - voor een agent op het standaardplatform (ElevenLabs) is het grijs op de agentdetails en is het te horen zodra de agent naar de engine overstapt. In het transcript van het gesprek draagt een beurt van de agent die de beller heeft onderbroken de vlag `interrupted`.
- Lachen van de agent alleen de eigen spraakengine van volai kan terug lachen wanneer u of de beller tijdens het gesprek lacht of een grap maakt - en alleen met een Tsjechische Cartesia-stem (Milena, Jan en de rest van de catalogus). Het standaardplatform (ElevenLabs) kan dit helemaal niet, ook niet als het veld is ingesteld. In de instellingen van de agent kiest u Automatisch (de engine zet het lachen bij gevoelige onderwerpen, zoals incasso, gezondheidszorg, overheden of uitvaartdiensten, zelf uit), Aan (overschrijft die detectie) of Uit. De wijziging gaat in vanaf het volgende gesprek.
18Agenda en afspraken
Een agent op de eigen spraakengine van volai kan tijdens het gesprek een vrij tijdstip in uw Google- of Apple-agenda controleren en de afspraak direct inplannen - hij zegt de beller of een tijdstip vrij is, biedt de eerstvolgende vrije momenten aan en plant de afspraak in zodra hij een naam heeft bevestigd. Zet het aan op het tabblad Agenda van de agenteditor: kies de koppeling (Gegevens en integraties), de specifieke agenda en de beschikbaarheidsregels.
- Beschikbaarheidsregels tijdvensters per weekdag (wanneer de agent überhaupt afspraken aanbiedt), duur van een afspraak, een buffer tussen afspraken, minimale aanlooptijd vóór het geboekte tijdstip en de horizon - hoe ver vooruit de agent zoekt. De editor vult standaardwaarden in, maar elke agent kan eigen waarden hebben.
- Ingebouwde tools de agenda gebruikt twee ingebouwde tools, check_availability en book_appointment - anders dan de eigen tools uit het hoofdstuk Tools hierboven worden ze niet met de hand aangemaakt, gaan ze samen met de agenda aan en tellen ze niet mee voor de toollimiet van het account.
- Alleen de eigen engine van volai werkt alleen voor een agent op de eigen spraakengine van volai. Zet u de agenda aan voor een agent op het standaardplatform (ElevenLabs), dan wordt de instelling opgeslagen en probeert de agent direct na het opslaan naar de engine van volai over te stappen - net als bij doorverbinden naar een persoon.
- Wat de agent wel en niet zegt de agent leest nooit voor wat er in de agenda staat - alleen of een bepaald tijdstip vrij is. Het telefoonnummer van de beller wordt alleen aan de afspraak toegevoegd wanneer de agent het kent (een onderdrukt nummer betekent dat de afspraak geen telefoonnummer heeft).
- Ook buiten een gesprek dezelfde zoektocht naar vrije tijdstippen en het inplannen van afspraken werkt ook buiten een gesprek, via REST (POST /v1/integrations/{id}/availability, POST /v1/integrations/{id}/events) en MCP (find_free_slots, create_calendar_event) - zie de sectie Agenda's in de REST API-referentie en de MCP-referentie voor details.
Gerelateerd
MCP-server
Koppel Claude Code, Codex CLI, Codex desktop, Cursor en andere AI-editors.
REST API
Volledige referentie van alle endpoints: nummers, gesprekken, sms, mobiele nummers voor sms, agents en hun concepten, tools, opnames, webhooks, niet-bellen-lijst, relay, account, taken, tegoed, documenten, agenda's en integraties.
Webhooks
Gebeurtenissen, gestructureerde gegevens in de body, verificatie van handtekeningen, nieuwe pogingen bij mislukking.
Eigen agent meebrengen
Koppel een platform van een derde partij (ElevenLabs, Asterisk...), zonder toeslag voor de agent.