This documentation is built and maintained by the Flireo AI team to help you create, launch, and scale intelligent phone agents. Access the dashboard here.
curl --location --request PATCH 'https://api.flireo.nl/v1/assistants/' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"assistant_name": "Recruiter - Externe workflow",
"first_message": "Goedemorgen, met Julia van Blue Select. Hoe kan ik je helpen?",
"end_call_message": "Bedankt voor het bellen, tot ziens.",
"voicemail_message": "Hallo, dit is Julian. Zou je een momentje kunnen vinden om mij terug te bellen? Heel erg bedankt!",
"first_message_outbound": "Goedemorgen, met Julia van Blue Select. Bel ik gelegen?",
"booking_message": "Neem hier contact met ons op",
"notifications_email": null,
"post_call_email": null,
"post_call_email_enabled": false,
"analysis_plan": {
"summaryPlan": {
"messages": [
{
"role": "system",
"content": "Maak een professionele samenvatting van dit gesprek. Beschrijf kort het hoofdonderwerp, de belangrijkste punten die besproken zijn, eventuele afspraken of vervolgacties, en de algemene sfeer van het gesprek."
},
{
"role": "user",
"content": "Here is the transcript:\n\n{{transcript}}\n\n. Here is the ended reason of the call:\n\n{{endedReason}}\n\n"
}
],
"timeoutSeconds": 30
},
"structuredDataPlan": {
"schema": {
"type": "object",
"required": [
"sentiment",
"ai_ervaring",
"hoofdonderwerp",
"gesprek_kwaliteit",
"bedrijf_waardering"
],
"properties": {
"sentiment": {
"type": "number",
"description": "Het algemene sentiment van de beller tijdens het gesprek op een schaal van 1-10 (1=zeer negatief, 10=zeer positief)"
},
"ai_ervaring": {
"type": "number",
"description": "Hoe vond de beller het praten met de AI assistent op een schaal van 1-10 (1=zeer slecht, 10=uitstekend)"
},
"hoofdonderwerp": {
"type": "string",
"description": "Het hoofdonderwerp of de reden van het gesprek in één zin"
},
"vraag_beantwoord": {
"type": "boolean",
"description": "Werd de hoofdvraag van de beller beantwoord?"
},
"gesprek_kwaliteit": {
"enum": [
"Uitstekend",
"Goed",
"Gemiddeld",
"Matig",
"Slecht"
],
"type": "string",
"description": "Algemene kwaliteit van het gesprek"
},
"bedrijf_waardering": {
"type": "number",
"description": "Wat vindt de beller van het bedrijf/de service op basis van dit gesprek, schaal 1-10 (1=zeer ontevreden, 10=zeer tevreden)"
},
"belangrijkste_punt": {
"type": "string",
"description": "Het belangrijkste punt of de kernboodschap van het gesprek"
},
"vervolgactie_nodig": {
"type": "boolean",
"description": "Is er een vervolgactie of terugbelverzoek afgesproken?"
},
"gespreksduur_gevoel": {
"enum": [
"Te kort",
"Precies goed",
"Te lang"
],
"type": "string",
"description": "Hoe voelde de gespreksduur aan voor de beller?"
},
"technische_problemen": {
"type": "boolean",
"description": "Waren er technische problemen tijdens het gesprek (geluidskwaliteit, verbinding, etc.)?"
}
}
},
"enabled": true,
"messages": [
{
"role": "system",
"content": "Analyseer dit gesprek grondig en extraheer de gevraagde gestructureerde informatie. Let goed op de toon, emoties en uitspraken van de beller om accurate beoordelingen te geven.\n\nJson Schema:\n{{schema}}\n\nOnly respond with the JSON."
},
{
"role": "user",
"content": "Here is the transcript:\n\n{{transcript}}\n\n. Here is the ended reason of the call:\n\n{{endedReason}}\n\n"
}
]
},
"minMessagesThreshold": 10,
"successEvaluationPlan": {
"rubric": "PassFail",
"messages": [
{
"role": "system",
"content": "Bekijk alle informatie in het gesprek. Bepaal of het een succesvol gesprek was en geef je antwoord in het gevraagde format. Een gesprek is succesvol als: de beller zijn vraag beantwoord kreeg, er een positieve interactie was, en de beller tevreden leek.\n\nRubric:\n\n{{rubric}}\n\nOnly respond with the evaluation result."
},
{
"role": "user",
"content": "Here is the transcript of the call:\n\n{{transcript}}\n\n. Here is the ended reason of the call:\n\n{{endedReason}}\n\n"
},
{
"role": "user",
"content": "Here was the system prompt of the call:\n\n{{systemPrompt}}\n\n"
}
],
"timeoutSeconds": 30
}
},
"message_plan": {
"idleMessages": [
"Hoi, ik hoor je even niet."
],
"idleTimeoutSeconds": 10,
"silenceTimeoutMessage": "Volgens mij is er een probleem met de verbinding want ik hoor je al even niet meer.I Ik hang nu op, zou je mij terug kunnen bellen?",
"idleMessageMaxSpokenCount": 3,
"idleMessageResetCountOnUserSpeechEnabled": false
},
"first_message_interruptions_enabled": true,
"first_message_mode": "assistant-speaks-first",
"max_duration_seconds": 600,
"background_sound": "office",
"end_call_phrases": [],
"compliance_plan": {
"hipaaEnabled": false,
"securityFilterPlan": {
"mode": "replace",
"enabled": true,
"filters": [
{}
],
"replacementText": "[GEFILTERD]"
}
},
"start_speaking_plan": {
"waitSeconds": 0.4,
"smartEndpointingPlan": {
"provider": "vapi"
},
"transcriptionEndpointingPlan": {
"onNumberSeconds": 0.5,
"onPunctuationSeconds": 0.1,
"onNoPunctuationSeconds": 1.5
}
},
"stop_speaking_plan": {
"numWords": 1,
"voiceSeconds": 0.1,
"backoffSeconds": 1,
"interruptionPhrases": [
"Stop",
"wacht even"
],
"acknowledgementPhrases": [
"Oke, ja juist..."
]
},
"keypad_input_plan": {
"enabled": true,
"delimiters": [
"#",
"*"
],
"timeoutSeconds": 0
},
"transcriber": {
"model": "nova-3-general",
"keyterm": [
"Blue select",
"vacatures"
],
"keywords": [
"Monteur",
"houtbewerker"
],
"language": "nl",
"numerals": true,
"provider": "deepgram",
"mipOptOut": false,
"endpointing": 10,
"smartFormat": true,
"confidenceThreshold": 0.65
},
"model": {
"model": "gpt-4.1-mini",
"tools": [
{
"type": "function",
"async": false,
"function": {
"name": "send_task",
"parameters": {
"type": "object",
"required": [],
"properties": {
"message": {
"type": "string",
"description": ""
}
}
},
"description": "Verstuurt een taakbericht naar het team!"
}
},
{
"type": "function",
"async": true,
"function": {
"name": "logs_ophalen",
"description": "Hiermee kun je de volledige logs geschiedenis van de beller ophalen."
}
},
{
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+31601234567",
"message": "Ik verbind u door met jesper...",
"description": "Verbindt door naar dit nummer als de beller kwaad wordt of met jesper wilt spreken"
}
]
}
],
"messages": [
{
"role": "system",
"content": "Je bent een recruiter bij Blue Select."
}
],
"provider": "openai",
"maxTokens": 150,
"temperature": 0.3,
"emotionRecognitionEnabled": false
},
"voice": {
"model": "eleven_flash_v2_5",
"voiceId": "ukiwGs47sHyibruHJ1vg",
"autoMode": true,
"provider": "11labs",
"stability": 0.5,
"similarityBoost": 0.6,
"useSpeakerBoost": true,
"inputPunctuationBoundaries": [
".",
"!",
"?"
]
},
"server_url_type": "external"
}'
{
"assistant_id": "8bd26a22-d3ca-4281-a9a0-aa8cdd47dc5b",
"assistant_name": "Recruiter - Externe workflow2",
"first_message": "Goedemorgen, met Julia van Blue Select. Hoe kan ik je helpen?",
"end_call_message": "Bedankt voor het bellen, tot ziens.",
"voicemail_message": "Hallo, dit is Julian. Zou je een momentje kunnen vinden om mij terug te bellen? Heel erg bedankt!",
"first_message_outbound": "Goedemorgen, met Julia van Blue Select. Bel ik gelegen?",
"booking_message": "Neem hier contact met ons op",
"notifications_email": null,
"post_call_email": null,
"post_call_email_enabled": false,
"analysis_plan": {
"summaryPlan": {
"messages": [
{
"role": "system",
"content": "Maak een professionele samenvatting van dit gesprek. Beschrijf kort het hoofdonderwerp, de belangrijkste punten die besproken zijn, eventuele afspraken of vervolgacties, en de algemene sfeer van het gesprek."
},
{
"role": "user",
"content": "Here is the transcript:\n\n{{transcript}}\n\n. Here is the ended reason of the call:\n\n{{endedReason}}\n\n"
}
],
"timeoutSeconds": 30
},
"structuredDataPlan": {
"schema": {
"type": "object",
"required": [
"sentiment",
"ai_ervaring",
"hoofdonderwerp",
"gesprek_kwaliteit",
"bedrijf_waardering"
],
"properties": {
"sentiment": {
"type": "number",
"description": "Het algemene sentiment van de beller tijdens het gesprek op een schaal van 1-10 (1=zeer negatief, 10=zeer positief)"
},
"ai_ervaring": {
"type": "number",
"description": "Hoe vond de beller het praten met de AI assistent op een schaal van 1-10 (1=zeer slecht, 10=uitstekend)"
},
"hoofdonderwerp": {
"type": "string",
"description": "Het hoofdonderwerp of de reden van het gesprek in één zin"
},
"vraag_beantwoord": {
"type": "boolean",
"description": "Werd de hoofdvraag van de beller beantwoord?"
},
"gesprek_kwaliteit": {
"enum": [
"Uitstekend",
"Goed",
"Gemiddeld",
"Matig",
"Slecht"
],
"type": "string",
"description": "Algemene kwaliteit van het gesprek"
},
"bedrijf_waardering": {
"type": "number",
"description": "Wat vindt de beller van het bedrijf/de service op basis van dit gesprek, schaal 1-10 (1=zeer ontevreden, 10=zeer tevreden)"
},
"belangrijkste_punt": {
"type": "string",
"description": "Het belangrijkste punt of de kernboodschap van het gesprek"
},
"vervolgactie_nodig": {
"type": "boolean",
"description": "Is er een vervolgactie of terugbelverzoek afgesproken?"
},
"gespreksduur_gevoel": {
"enum": [
"Te kort",
"Precies goed",
"Te lang"
],
"type": "string",
"description": "Hoe voelde de gespreksduur aan voor de beller?"
},
"technische_problemen": {
"type": "boolean",
"description": "Waren er technische problemen tijdens het gesprek (geluidskwaliteit, verbinding, etc.)?"
}
}
},
"enabled": true,
"messages": [
{
"role": "system",
"content": "Analyseer dit gesprek grondig en extraheer de gevraagde gestructureerde informatie. Let goed op de toon, emoties en uitspraken van de beller om accurate beoordelingen te geven.\n\nJson Schema:\n{{schema}}\n\nOnly respond with the JSON."
},
{
"role": "user",
"content": "Here is the transcript:\n\n{{transcript}}\n\n. Here is the ended reason of the call:\n\n{{endedReason}}\n\n"
}
]
},
"minMessagesThreshold": 10,
"successEvaluationPlan": {
"rubric": "PassFail",
"messages": [
{
"role": "system",
"content": "Bekijk alle informatie in het gesprek. Bepaal of het een succesvol gesprek was en geef je antwoord in het gevraagde format. Een gesprek is succesvol als: de beller zijn vraag beantwoord kreeg, er een positieve interactie was, en de beller tevreden leek.\n\nRubric:\n\n{{rubric}}\n\nOnly respond with the evaluation result."
},
{
"role": "user",
"content": "Here is the transcript of the call:\n\n{{transcript}}\n\n. Here is the ended reason of the call:\n\n{{endedReason}}\n\n"
},
{
"role": "user",
"content": "Here was the system prompt of the call:\n\n{{systemPrompt}}\n\n"
}
],
"timeoutSeconds": 30
}
},
"message_plan": {
"idleMessages": [
"Hoi, ik hoor je even niet."
],
"idleTimeoutSeconds": 10,
"silenceTimeoutMessage": "Volgens mij is er een probleem met de verbinding want ik hoor je al even niet meer.I Ik hang nu op, zou je mij terug kunnen bellen?",
"idleMessageMaxSpokenCount": 3,
"idleMessageResetCountOnUserSpeechEnabled": false
},
"first_message_interruptions_enabled": true,
"first_message_mode": "assistant-speaks-first",
"max_duration_seconds": 600,
"background_sound": "office",
"end_call_phrases": [],
"compliance_plan": {
"hipaaEnabled": false,
"securityFilterPlan": {
"mode": "replace",
"enabled": true,
"filters": [
{}
],
"replacementText": "[GEFILTERD]"
}
},
"start_speaking_plan": {
"waitSeconds": 0.4,
"smartEndpointingPlan": {
"provider": "vapi"
},
"transcriptionEndpointingPlan": {
"onNumberSeconds": 0.5,
"onPunctuationSeconds": 0.1,
"onNoPunctuationSeconds": 1.5
}
},
"stop_speaking_plan": {
"numWords": 1,
"voiceSeconds": 0.1,
"backoffSeconds": 1,
"interruptionPhrases": [
"Stop",
"wacht even"
],
"acknowledgementPhrases": [
"Oke, ja juist..."
]
},
"keypad_input_plan": {
"enabled": true,
"delimiters": [
"#",
"*"
],
"timeoutSeconds": 0
},
"transcriber": {
"model": "nova-3-general",
"keyterm": [
"Blue select",
"vacatures"
],
"keywords": [
"Monteur",
"houtbewerker"
],
"language": "nl",
"numerals": true,
"provider": "deepgram",
"mipOptOut": false,
"endpointing": 10,
"smartFormat": true,
"confidenceThreshold": 0.65
},
"model": {
"model": "gpt-4.1-mini",
"tools": [
{
"type": "function",
"async": false,
"function": {
"name": "send_task",
"parameters": {
"type": "object",
"required": [],
"properties": {
"message": {
"type": "string",
"description": ""
}
}
},
"description": "Verstuurt een taakbericht naar het team!"
}
},
{
"type": "function",
"async": true,
"function": {
"name": "logs_ophalen",
"description": "Hiermee kun je de volledige logs geschiedenis van de beller ophalen."
}
},
{
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+31601234567",
"message": "Ik verbind u door met jesper...",
"description": "Verbindt door naar dit nummer als de beller kwaad wordt of met jesper wilt spreken"
}
]
}
],
"messages": [
{
"role": "system",
"content": "Je bent een recruiter bij Blue Select."
}
],
"provider": "openai",
"maxTokens": 150,
"temperature": 0.3,
"emotionRecognitionEnabled": false
},
"voice": {
"model": "eleven_flash_v2_5",
"voiceId": "ukiwGs47sHyibruHJ1vg",
"autoMode": true,
"provider": "11labs",
"stability": 0.5,
"similarityBoost": 0.6,
"useSpeakerBoost": true,
"inputPunctuationBoundaries": [
".",
"!",
"?"
]
},
"server_url_type": "external",
"created_at": "2025-08-27T21:49:46.576271+00:00",
"phone_number": null,
"phone_number_type": null,
"phone_number_locality": null
}