> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Créer un assistant

> Créer un nouvel assistant IA avec la configuration spécifiée

<Warning>
  **API Famulor 1.0 (héritée).** Cette page concerne uniquement Famulor 1.0 (`app.famulor.de`) et est conservée pour la compatibilité. Pour la plateforme actuelle, consultez la [référence API Famulor 2.0](/fr/api-reference/introduction).
</Warning>

> Créer un nouvel assistant IA avec la configuration spécifiée

Ce point de terminaison vous permet de créer un nouvel assistant IA avec des options de configuration complètes.

## Modes du moteur

L’API prend en charge trois modes de moteur aux capacités différentes :

| Mode         | Description                                     | Champs requis         |
| ------------ | ----------------------------------------------- | --------------------- |
| `pipeline`   | Pipeline classique STT → LLM → TTS              | `llm_model_id`        |
| `multimodal` | IA multimodale en temps réel                    | `multimodal_model_id` |
| `dualplex`   | « Cerveau » multimodal + voix TTS personnalisée | `multimodal_model_id` |

## Corps de la requête

### Champs principaux requis

<ParamField body="name" type="string" required>
  Le nom de l’assistant (255 caractères maximum)
</ParamField>

<ParamField body="voice_id" type="integer" required>
  L’ID de la voix pour l’assistant. Utilisez le point de terminaison [Récupérer les voix](/fr/api-v1/assistants/voices) avec le paramètre de requête `mode` pour obtenir les voix compatibles avec votre mode de moteur.
</ParamField>

<ParamField body="language_id" type="integer" required>
  L’ID de la langue pour l’assistant. Utilisez le point de terminaison [Récupérer les langues](/fr/api-v1/assistants/languages) pour obtenir les langues disponibles.
</ParamField>

<ParamField body="type" type="string" required>
  Le type d’assistant. Options : `inbound`, `outbound`
</ParamField>

<ParamField body="mode" type="string" required>
  Le mode du moteur. Options : `pipeline`, `multimodal`, `dualplex`
</ParamField>

<ParamField body="timezone" type="string" required>
  Le fuseau horaire de l’assistant (par ex. « Europe/Berlin », « America/New\_York »)
</ParamField>

<ParamField body="initial_message" type="string" required>
  Le premier message que l’assistant prononce au début de l’appel (200 caractères maximum)
</ParamField>

<ParamField body="system_prompt" type="string" required>
  Le prompt système qui définit le comportement et la personnalité de l’assistant
</ParamField>

### Champs spécifiques au mode

<ParamField body="llm_model_id" type="integer">
  L’ID du modèle LLM. **Requis pour le mode `pipeline`.**

  Utilisez le point de terminaison [Récupérer les modèles](/fr/api-v1/assistants/models) pour obtenir les modèles disponibles.
</ParamField>

<ParamField body="multimodal_model_id" type="integer">
  L’ID du modèle multimodal. **Requis pour les modes `multimodal` et `dualplex`.**

  Utilisez le point de terminaison [Récupérer les modèles](/fr/api-v1/assistants/models) pour obtenir les modèles multimodaux disponibles.
</ParamField>

<ParamField body="chat_llm_fallback_id" type="integer">
  ID du modèle LLM de repli pour les appels d’outils en `multimodal`/`dualplex`. Facultatif.
</ParamField>

<ParamField body="turn_detection_threshold" type="number">
  Sensibilité de la détection de tour de parole en `multimodal`/`dualplex` (0-1). Par défaut : auto
</ParamField>

### Langues secondaires

<ParamField body="secondary_language_ids" type="integer[]">
  Tableau d’ID de langues supplémentaires que l’assistant peut parler. L’assistant reconnaît automatiquement la langue et bascule en conséquence.

  ```json theme={null} theme={null}
  "secondary_language_ids": [2, 3, 4]
  ```
</ParamField>

### Paramètres de la base de connaissances

<ParamField body="knowledgebase_id" type="integer">
  L’ID de la base de connaissances à associer à cet assistant
</ParamField>

<ParamField body="knowledgebase_mode" type="string">
  Comment utiliser la base de connaissances. Options :

  * `function_call` - L’IA appelle une fonction pour effectuer une recherche (requis pour multimodal/dualplex)
  * `prompt` - Les connaissances sont injectées dans le prompt (pipeline uniquement)
</ParamField>

### Organisation

<ParamField body="folder_id" type="integer">
  ID d’un [dossier](/fr/api-v1/folders/create) dans lequel placer cet assistant. Doit appartenir à votre compte. Envoyez `null` pour laisser l’assistant non classé.
</ParamField>

<ParamField body="label_ids" type="integer[]">
  Tableau d’ID d’[étiquette](/fr/api-v1/labels/create) à appliquer à cet assistant. Chaque étiquette doit appartenir à votre compte.

  ```json theme={null} theme={null}
  "label_ids": [3, 5]
  ```
</ParamField>

### Numéro de téléphone

<ParamField body="phone_number_id" type="integer">
  L’ID d’un numéro de téléphone à attribuer à l’assistant. Doit appartenir à votre compte.

  <Warning>
    Pour les assistants `inbound`, le numéro de téléphone ne doit pas être de type identifiant d’appelant et ne doit pas déjà être attribué à un autre assistant `inbound`.
  </Warning>
</ParamField>

### Outils mid-call personnalisés

<ParamField body="tool_ids" type="integer[]">
  Tableau d’ID des outils mid-call personnalisés à associer. Chaque outil doit appartenir à votre compte.

  ```json theme={null} theme={null}
  "tool_ids": [1, 5, 12]
  ```
</ParamField>

### Outils intégrés

<ParamField body="tools" type="array">
  Tableau d’outils intégrés. Chaque outil possède un champ `type` et des champs spécifiques à l’outil. Lors de [Mettre à jour un assistant](/fr/api-v1/assistants/update), ceci **remplace tous les outils intégrés existants** — transmettez un tableau vide `[]` pour supprimer tous les outils.

  <Expandable title="Types d’outils">
    **call\_transfer** - Transférer l’appel vers un autre numéro de téléphone

    * `phone_number` (requis) : numéro de téléphone vers lequel transférer
    * `description` : quand transférer l’appel
    * `custom` : si `true`, l’IA peut déterminer dynamiquement le numéro de transfert
    * `timezone` : fuseau horaire pour la disponibilité du transfert
    * `warm_transfer` : envoyer un message au client avant le transfert (par défaut : `false`)
    * `warm_transfer_message` : prompt indiquant à l’IA quoi dire avant le transfert (par ex. « Informez le client que l’appel est en cours de transfert. »)

    **warm\_call\_transfer** - Transfert accompagné avec briefing du superviseur

    * `supervisor_phone` (requis) : numéro de téléphone à composer pour le transfert accompagné (par ex. « +14155552001 »). Si `custom_sip` est activé, il s’agit à la place d’une adresse SIP ou d’un poste interne.
    * `outbound_phone_id` (requis) : ID du numéro de téléphone utilisé pour appeler le superviseur. Voir [Récupérer les numéros de téléphone](/fr/api-v1/assistants/phone-numbers).
    * `description` (requis) : quand transférer — décrit dans quel cas l’IA doit lancer le transfert accompagné (par ex. « Transférez l’appel à un superviseur humain lorsque le client demande à parler à une vraie personne. »)
    * `custom_sip` : activez pour saisir une adresse SIP personnalisée ou un poste interne à la place d’un numéro de téléphone (par défaut : `false`)
    * `caller_id_mode` : quel numéro de téléphone le superviseur voit à la réception de l’appel. Options : `outbound_number` (par défaut — affiche le numéro sortant), `customer_number` (affiche le numéro de l’appelant), `custom` (affiche un numéro personnalisé)
    * `custom_caller_id` : numéro de téléphone personnalisé affiché au superviseur. Utilisé uniquement lorsque `caller_id_mode` vaut `custom`.
    * `hold_music` : audio diffusé à l’appelant pendant la mise en attente. Options : `hold_music` (par défaut — joue la musique d’attente par défaut), `none` (silence, pas de musique)
    * `hold_music_volume` : niveau de volume de la musique d’attente, 0 à 100 (par défaut : `80`)
    * `hold_message` : message prononcé à l’appelant avant sa mise en attente (par défaut : « Please hold while I connect you with a supervisor. »)
    * `summary_instructions` : instructions sur la façon dont l’IA doit briefer le superviseur au sujet de l’appel (par défaut : « Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences). »)
    * `briefing_initial_message` : le premier message que l’IA adresse au superviseur lorsqu’il répond (par défaut : « Hello! I have a caller on the line who needs your assistance. May I brief you on the situation? »)
    * `connected_message` : message prononcé à l’appelant une fois le superviseur connecté (par défaut : « You are now connected with a supervisor. I'll leave you to it. »)

    **end\_call** - Terminer l’appel par programmation

    * `description` : quand l’IA doit terminer l’appel

    **dtmf\_input** - Envoyer des tonalités DTMF (saisie au clavier)

    * `description` : quand utiliser la saisie DTMF (pour la navigation dans un SVI)

    **collect\_keypad** - Recueillir la saisie au clavier de l’appelant

    * `timeout` : secondes d’attente de la saisie, 1 à 30 (par défaut : `5`)
    * `stop_key` : touche qui termine la saisie. Options : `#` (par défaut), `*`

    **calendar\_integration** - Planifier des rendez-vous via Cal.com

    * `calcom_api_key` (requis) : votre clé API Cal.com
    * `calcom_event_slug` (requis) : le slug du type d’événement Cal.com
    * `calcom_team_slug` : slug de l’équipe si l’événement appartient à une équipe Cal.com
    * `calcom_endpoint` : région de l’API Cal.com. Options : `us` (par défaut — `https://api.cal.com`), `eu` (`https://api.cal.eu`), `custom` (utilise `calcom_custom_endpoint`)
    * `calcom_custom_endpoint` : URL de base personnalisée de l’API Cal.com. Utilisée uniquement lorsque `calcom_endpoint` vaut `custom` (par ex. `https://my-calcom-instance.com`).
    * `calcom_booking_fields` : tableau de champs de réservation personnalisés pour l’événement. Chaque champ comporte : `slug` (requis), `type` (requis, par ex. « text », « email », « phone », « select »), `label` (requis), `required` (par défaut : `false`), `options` (tableau d’options pour les champs de type select)
    * `description` : quand proposer la prise de rendez-vous

    **assistant\_transfer** - Transférer la conversation à un autre assistant IA en cours d’appel (bascule la voix, le LLM et la reconnaissance vocale vers l’assistant cible)

    * `assistant_id` (requis) : ID de l’assistant cible. Doit appartenir à votre compte et ne peut pas être l’assistant en cours de mise à jour (pas d’auto-transfert).
    * `description` : quand transférer (500 caractères maximum, par défaut : « Transfer the conversation to this assistant when appropriate. »)
    * `message_before_transfer` : message facultatif que l’IA prononce avant de basculer vers l’assistant cible (500 caractères maximum).
    * `speak_transfer_greeting` : si `true`, l’assistant cible prononce son message initial configuré une fois le transfert terminé (par défaut : `true`)
  </Expandable>

  ```json theme={null} theme={null}
  "tools": [
    {
      "type": "dtmf_input",
      "description": "Navigate IVR when needed"
    },
    {
      "type": "warm_call_transfer",
      "supervisor_phone": "+1234567890",
      "outbound_phone_id": 7,
      "description": "Transfer the call to a human supervisor when the customer requests to speak with a real person.",
      "custom_sip": false,
      "caller_id_mode": "outbound_number",
      "hold_music": "hold_music",
      "hold_music_volume": 80,
      "hold_message": "Please hold while I connect you with a supervisor.",
      "summary_instructions": "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).",
      "briefing_initial_message": "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?",
      "connected_message": "You are now connected with a supervisor. I'll leave you to it."
    },
    {
      "type": "collect_keypad",
      "timeout": 5,
      "stop_key": "#"
    },
    {
      "type": "assistant_transfer",
      "assistant_id": 14765,
      "description": "Transfer to the Support Assistant when the customer needs technical help.",
      "message_before_transfer": "Sure — let me transfer you to our support specialist.",
      "speak_transfer_greeting": true
    },
    {
      "type": "end_call",
      "description": "End call when done"
    }
  ]
  ```

  <Note>
    Lorsque vous [lister les assistants](/fr/api-v1/assistants/list), chaque outil configuré est renvoyé sous la forme `{ "type": "...", "data": { ... } }`, avec les mêmes noms de champs imbriqués sous `data` (pas au niveau racine).
  </Note>
</ParamField>

### Paramètres de voix et TTS

<ParamField body="tts_emotion_enabled" type="boolean" default="true">
  Indique si la synthèse vocale émotionnelle est activée
</ParamField>

<ParamField body="voice_stability" type="number" default="0.70">
  Stabilité de la voix (0-1). Plus élevé = plus constant
</ParamField>

<ParamField body="voice_similarity" type="number" default="0.50">
  Similarité de la voix (0-1). Plus élevé = plus proche de l’originale
</ParamField>

<ParamField body="speech_speed" type="number" default="1.00">
  Multiplicateur de vitesse d’élocution (0.7-1.2)
</ParamField>

<ParamField body="llm_temperature" type="number" default="0.10">
  Température du LLM (0-1). Plus faible = plus déterministe
</ParamField>

<ParamField body="synthesizer_provider_id" type="integer">
  ID du fournisseur TTS personnalisé. Si non défini, sélectionné automatiquement selon la langue. Voir [Récupérer les fournisseurs de synthèse vocale](/fr/api-v1/assistants/synthesizer-providers).
</ParamField>

<ParamField body="transcriber_provider_id" type="integer">
  ID du fournisseur STT personnalisé. Si non défini, sélectionné automatiquement selon la langue. Uniquement pour `pipeline`. Voir [Récupérer les fournisseurs de transcription](/fr/api-v1/assistants/transcriber-providers).
</ParamField>

### Paramètres de comportement d’appel

<ParamField body="allow_interruptions" type="boolean" default="true">
  Indique si les interruptions de l’appelant sont autorisées.

  <Warning>Ne peut pas être désactivé pour `multimodal` et `dualplex`.</Warning>
</ParamField>

<ParamField body="fillers" type="boolean" default="false">
  Indique si un audio de remplissage doit être utilisé pendant le traitement (par ex. « euh », « un instant »).

  <Warning>Disponible uniquement en mode `pipeline`.</Warning>
</ParamField>

<ParamField body="filler_config" type="object">
  Profils de remplissage personnalisés par catégorie. Si non spécifié, des valeurs par défaut selon la langue sont utilisées. Chaque catégorie est un tableau de phrases courtes.

  * `positive` : formules pour les réponses affirmatives (par ex. « Super ! », « Parfait ! »)
  * `negative` : formules pour les réponses négatives/neutres (par ex. « Hum. », « Mhm. »)
  * `question` : formules pendant le traitement d’une question (par ex. « Bonne question. », « Un instant. »)
  * `neutral` : formules pour les accusés de réception neutres (par ex. « D’accord. », « Compris. »)

  ```json theme={null} theme={null}
  "filler_config": {
    "positive": ["Great!", "Perfect!", "Very good!"],
    "negative": ["Hmm.", "Understood.", "Okay."],
    "question": ["Good question.", "One moment.", "Let me check."],
    "neutral": ["Okay.", "Understood.", "Noted."]
  }
  ```
</ParamField>

<ParamField body="record" type="boolean" default="false">
  Indique si l’appel doit être enregistré
</ParamField>

<ParamField body="enable_noise_cancellation" type="boolean" default="true">
  Indique si la suppression du bruit doit être activée
</ParamField>

<ParamField body="wait_for_customer" type="boolean" default="false">
  Si `true`, l’assistant attend que le client parle en premier
</ParamField>

### Paramètres de durée

<ParamField body="max_duration" type="integer" default="600">
  Durée maximale de l’appel en secondes (20-1200)
</ParamField>

<ParamField body="max_silence_duration" type="integer" default="40">
  Durée maximale de silence avant relance, en secondes (1-360)
</ParamField>

<ParamField body="max_initial_silence_duration" type="integer">
  Silence maximal juste après le début de l’appel avant fin d’appel (1 à 120 secondes). Facultatif.
</ParamField>

<ParamField body="ringing_time" type="integer" default="30">
  Durée maximale de sonnerie avant annulation (1 à 60 secondes)
</ParamField>

### Paramètres de relance

<ParamField body="reengagement_interval" type="integer" default="30">
  Intervalle de relance en secondes (7-600)
</ParamField>

<ParamField body="reengagement_prompt" type="string">
  Prompt personnalisé pour les messages de relance (1000 caractères maximum)

  Exemple : `"Are you still there? Do you have any other questions?"`
</ParamField>

### Paramètres de messagerie vocale

<ParamField body="end_call_on_voicemail" type="boolean" default="true">
  Indique s’il faut terminer l’appel en cas de détection d’une messagerie vocale
</ParamField>

<ParamField body="voice_mail_message" type="string">
  Message à laisser sur la messagerie vocale (1000 caractères maximum)
</ParamField>

### Détection de tour de parole

<ParamField body="endpoint_type" type="string" default="vad">
  Type de détection d’activité vocale. Options : `vad`, `ai`
</ParamField>

<ParamField body="endpoint_sensitivity" type="number" default="0.5">
  Sensibilité de détection de fin de tour (0-5)
</ParamField>

<ParamField body="interrupt_sensitivity" type="number" default="0.5">
  Sensibilité aux interruptions (0-5)
</ParamField>

<ParamField body="min_interrupt_words" type="integer">
  Nombre minimum de mots avant que l’interruption soit autorisée (0-10). À définir pour activer.
</ParamField>

### Son d’ambiance

<ParamField body="ambient_sound" type="string">
  Son d’ambiance de fond. Options : `off`, `office`, `city`, `forest`, `crowded_room`, `cafe`, `nature`
</ParamField>

<ParamField body="ambient_sound_volume" type="number" default="0.5">
  Volume du son d’ambiance (0-1)
</ParamField>

### Configuration du webhook

<ParamField body="is_webhook_active" type="boolean" default="false">
  Indique si les notifications webhook sont activées
</ParamField>

<ParamField body="webhook_url" type="string">
  L’URL du webhook pour les notifications post-appel. **Requis si `is_webhook_active` vaut `true`.**
</ParamField>

<ParamField body="send_webhook_only_on_completed" type="boolean" default="true">
  Indique s’il faut envoyer des webhooks uniquement pour les appels terminés (pas pour les échecs/sans réponse)
</ParamField>

<ParamField body="include_recording_in_webhook" type="boolean" default="true">
  Indique s’il faut inclure l’URL de l’enregistrement dans le payload du webhook
</ParamField>

### Évaluation post-appel

<ParamField body="post_call_evaluation" type="boolean" default="true">
  Indique si l’évaluation post-appel par IA est activée
</ParamField>

<ParamField body="post_call_schema" type="array">
  Définition de schéma pour l’extraction des données post-appel

  <Expandable title="Propriétés de post_call_schema">
    <ParamField body="name" type="string" required>
      Nom du champ (3 à 16 caractères, minuscules, alphanumériques et underscores uniquement)
    </ParamField>

    <ParamField body="type" type="string" required>
      Type de donnée. Options : `string`, `number`, `bool`
    </ParamField>

    <ParamField body="description" type="string" required>
      Description de ce que représente ce champ (3 à 255 caractères)
    </ParamField>
  </Expandable>

  ```json theme={null} theme={null}
  "post_call_schema": [
    {"name": "status", "type": "bool", "description": "Whether the call objective was met"},
    {"name": "summary", "type": "string", "description": "Brief summary of the call"}
  ]
  ```
</ParamField>

### Variables

<ParamField body="variables" type="object">
  Paires clé-valeur de variables personnalisées utilisables dans les prompts via `{{variable_name}}`

  ```json theme={null} theme={null}
  "variables": {
    "company_name": "Acme GmbH",
    "product": "Premium Widget",
    "support_email": "support@acme.com"
  }
  ```
</ParamField>

### Paramètres de fin de conversation

<ParamField body="conversation_inactivity_timeout" type="integer" default="30">
  Minutes d’inactivité du chat avant que la conversation soit considérée comme terminée (1 à 1440)
</ParamField>

<ParamField body="conversation_ended_retrigger" type="boolean" default="false">
  Indique si la conversation peut redémarrer après une fin par inactivité
</ParamField>

<ParamField body="conversation_ended_webhook_url" type="string">
  URL du webhook appelée lorsqu’une conversation de chat se termine par inactivité. Distincte du webhook d’appel.
</ParamField>

***

## Exemples de requêtes

### Assistant en mode `pipeline`

```json theme={null} theme={null}
{
  "name": "Sales Assistant",
  "voice_id": 1,
  "language_id": 1,
  "type": "outbound",
  "mode": "pipeline",
  "timezone": "Europe/Berlin",
  "initial_message": "Hello! How can I assist you today?",
  "system_prompt": "You are a professional sales assistant...",
  "llm_model_id": 2,
  "secondary_language_ids": [2, 3],
  "knowledgebase_id": 1,
  "knowledgebase_mode": "prompt",
  "fillers": true,
  "filler_config": {
    "positive": ["Great!", "Perfect!", "Very good!"],
    "negative": ["Hmm.", "Understood."],
    "question": ["Good question.", "One moment."],
    "neutral": ["Okay.", "Noted.", "Understood."]
  },
  "tool_ids": [1, 5],
  "tools": [
    {"type": "dtmf_input", "description": "Navigate IVR when needed"},
    {
      "type": "warm_call_transfer",
      "supervisor_phone": "+1234567891",
      "outbound_phone_id": 7,
      "description": "Transfer the call to a human supervisor when the customer requests to speak with a real person.",
      "custom_sip": false,
      "caller_id_mode": "outbound_number",
      "hold_music": "hold_music",
      "hold_music_volume": 80,
      "hold_message": "Please hold while I connect you with a supervisor.",
      "summary_instructions": "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).",
      "briefing_initial_message": "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?",
      "connected_message": "You are now connected with a supervisor. I'll leave you to it."
    },
    {"type": "collect_keypad", "timeout": 5, "stop_key": "#"},
    {
      "type": "assistant_transfer",
      "assistant_id": 14765,
      "description": "Transfer to the Support Assistant when the customer needs technical help.",
      "message_before_transfer": "Sure — let me transfer you to our support specialist.",
      "speak_transfer_greeting": true
    },
    {"type": "end_call", "description": "End call when the customer is satisfied"}
  ],
  "reengagement_interval": 20,
  "reengagement_prompt": "Are you still there?"
}
```

### Assistant en mode `multimodal`

```json theme={null} theme={null}
{
  "name": "Support Bot",
  "voice_id": 41,
  "language_id": 1,
  "type": "inbound",
  "mode": "multimodal",
  "timezone": "America/New_York",
  "initial_message": "Hi! Welcome to support.",
  "system_prompt": "You are a helpful support agent...",
  "multimodal_model_id": 1,
  "chat_llm_fallback_id": 2,
  "turn_detection_threshold": 0.7,
  "knowledgebase_id": 1,
  "knowledgebase_mode": "function_call",
  "tts_emotion_enabled": false
}
```

### Assistant en mode `dualplex`

```json theme={null} theme={null}
{
  "name": "Premium Agent",
  "voice_id": 1,
  "language_id": 2,
  "type": "outbound",
  "mode": "dualplex",
  "timezone": "Europe/Berlin",
  "initial_message": "Good day!",
  "system_prompt": "You are a professional assistant...",
  "multimodal_model_id": 4,
  "chat_llm_fallback_id": 2,
  "secondary_language_ids": [1, 3],
  "knowledgebase_id": 1,
  "knowledgebase_mode": "function_call",
  "ambient_sound": "office",
  "ambient_sound_volume": 0.3
}
```

***

## Réponse

<ResponseField name="message" type="string">
  Message de succès confirmant la création de l’assistant
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="propriétés">
    <ResponseField name="id" type="integer">
      L’ID unique de l’assistant créé
    </ResponseField>

    <ResponseField name="name" type="string">
      Le nom de l’assistant
    </ResponseField>

    <ResponseField name="status" type="string">
      Le statut actuel (`inactive` pour les assistants nouvellement créés)
    </ResponseField>

    <ResponseField name="type" type="string">
      Le type (`inbound` ou `outbound`)
    </ResponseField>

    <ResponseField name="mode" type="string">
      Le mode du moteur (`pipeline`, `multimodal` ou `dualplex`)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 201 Success Response theme={null} theme={null}
  {
    "message": "Assistant created successfully",
    "data": {
      "id": 789,
      "name": "Sales Assistant",
      "status": "inactive",
      "type": "outbound",
      "mode": "pipeline"
    }
  }
  ```

  ```json 422 Validation Error theme={null} theme={null}
  {
    "message": "Validation failed",
    "errors": {
      "name": ["The name field is required."],
      "voice_id": ["The selected voice is not compatible with the chosen engine type."],
      "knowledgebase_mode": ["Only function_call mode is available for multimodal assistants."]
    }
  }
  ```
</ResponseExample>

***

## Remarques

* Tous les champs requis doivent être fournis pour que la création réussisse
* Utilisez le point de terminaison [Récupérer les voix](/fr/api-v1/assistants/voices) avec le paramètre de requête `mode` pour obtenir les voix compatibles
* Pour `multimodal`/`dualplex`, `knowledgebase_mode` doit être défini sur `function_call`
* Pour `multimodal`/`dualplex`, `allow_interruptions` est toujours activé
* `fillers` n’est disponible qu’en mode `pipeline`
* Les nouveaux assistants sont créés avec le statut `inactive` par défaut
