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

# Envoyer une question à un agent

## Paramètres

<ParamField body="companyIdentifier" type="string" required>
  Identifiant du client (même valeur que pour [`/customers`](/clients/creer)).
</ParamField>

<ParamField body="agentUUID" type="string" required>
  UUID de l’agent (assistant) qui doit répondre.
</ParamField>

<ParamField body="question" type="string" required>
  Question de l’utilisateur final.
</ParamField>

<ParamField body="stream" type="boolean" default="true">
  `true` → réponse en flux (SSE) ; `false` → réponse complète en une fois.
</ParamField>

<ParamField body="files" type="array">
  Images et documents joints à la question. Chaque élément : `{ "url": "...", "type": "image/png", "name": "optionnel" }`. Voir [Fichiers joints](#fichiers-joints) ci-dessous.
</ParamField>

Aucun `uuid` n’est requis : le serveur génère l’identifiant de la réponse et vous le renvoie (champ `uuid` en mode non stream, en-tête `X-Moustache-Message-UUID` en mode stream). Il sert à [noter la réponse](/conversations/noter).

## Fichiers joints

| Type | Formats | Traitement |
| - | - | - |
| Images | PNG, JPG, GIF, WebP | Envoyées au modèle en entrée vision. L’agent doit utiliser un **modèle vision** avec la vision activée, sinon **403**. `url` peut être une URL publique HTTPS ou un `data:` URL base64. |
| Documents | PDF, DOCX, PPTX, TXT, CSV, JSON (25 Mo max par fichier) | Le texte est extrait par Moustache AI puis ajouté à la question. Fonctionne avec tous les modèles. Un PDF scanné passe par une reconnaissance de texte (OCR) quand un modèle vision auxiliaire est configuré. Envoi en `data:` URL base64 ou en multipart uniquement : une URL distante est refusée (**400**). |

Les fichiers peuvent être envoyés :

* en **JSON** via `files` (`data:` URL base64, ou URL publique HTTPS pour les images) ;
* en **multipart/form-data** via un champ `files` (un ou plusieurs fichiers).

Les fichiers joints sont conservés et retrouvés dans l’[historique](/conversations/historique).

## Réponses

### Mode *stream*

* **200 OK** : renvoie un flux texte `text/html; charset=utf-8` dont chaque chunk est une partie de la réponse. Le flux se termine par le marqueur `:EOS:`.
* L’identifiant de la réponse est dans l’en-tête `X-Moustache-Message-UUID` (affichez-le avec `curl -i`).
* Autres codes d’erreur : voir tableau ci-dessous.

Format, interruption et envoi multipart : voir [Mode stream](/conversations/mode-stream).

### Mode *non stream*

| Code | Corps JSON |
| - | - |
| 200 | `{ "uuid": "…", "message": "…", "buttons": [ "Option 1", "Option 2" ] }` |
| 400 | `{ "error": "Missing parameters" }`, ou document envoyé par URL distante, vide ou mal encodé |
| 401 | `{ "error": "Unauthorized: Unknown token" }` |
| 403 | `{ "error": "Image inputs require a vision-capable model …" }` |
| 404 | `{ "error": "Unauthorized: Assistant not found for your company" }` |
| 413 | Document de plus de 25 Mo |
| 415 | Type de fichier non pris en charge |
| 422 | Aucun texte n’a pu être extrait du document |
| 500 | `{ "error": "Answer not found" }` ou erreur interne. |

<RequestExample>
  ```bash JSON theme={null}
  curl -X POST https://api.moustacheai.com/api/v1/responses \
    -H "Authorization: Bearer MON_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
          "companyIdentifier": "CLIENT_123",
          "agentUUID": "28ce3b2d-5791-4905-8d66-123456789abc",
          "question": "Quels sont vos horaires d’ouverture ?",
          "stream": false
        }'
  ```

  ```bash Stream theme={null}
  curl -N -X POST https://api.moustacheai.com/api/v1/responses \
    -H "Authorization: Bearer MON_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
          "companyIdentifier": "CLIENT_123",
          "agentUUID": "28ce3b2d-5791-4905-8d66-123456789abc",
          "question": "Je souhaite prendre rendez-vous.",
          "stream": true
        }'
  ```

  ```bash Image theme={null}
  curl -X POST https://api.moustacheai.com/api/v1/responses \
    -H "Authorization: Bearer MON_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
          "companyIdentifier": "CLIENT_123",
          "agentUUID": "28ce3b2d-5791-4905-8d66-123456789abc",
          "question": "Peux-tu décrire l’image ?",
          "stream": false,
          "files": [
            {
              "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...",
              "type": "image/jpeg",
              "name": "produit-1.jpg"
            }
          ]
        }'
  ```

  ```bash PDF theme={null}
  curl -X POST https://api.moustacheai.com/api/v1/responses \
    -H "Authorization: Bearer MON_API_TOKEN" \
    -F "companyIdentifier=CLIENT_123" \
    -F "agentUUID=28ce3b2d-5791-4905-8d66-123456789abc" \
    -F "question=Résume ce devis" \
    -F "stream=false" \
    -F "files=@/chemin/vers/devis.pdf;type=application/pdf"
  ```

  ```bash Multipart theme={null}
  curl -X POST https://api.moustacheai.com/api/v1/responses \
    -H "Authorization: Bearer MON_API_TOKEN" \
    -F "companyIdentifier=CLIENT_123" \
    -F "agentUUID=28ce3b2d-5791-4905-8d66-123456789abc" \
    -F "question=Peux-tu décrire l’image ?" \
    -F "stream=false" \
    -F "files=@/chemin/vers/produit-1.jpg"
  ```

  ```bash Multi-fichiers theme={null}
  curl -X POST https://api.moustacheai.com/api/v1/responses \
    -H "Authorization: Bearer MON_API_TOKEN" \
    -F "companyIdentifier=CLIENT_123" \
    -F "agentUUID=28ce3b2d-5791-4905-8d66-123456789abc" \
    -F "question=Compare ces deux images" \
    -F "stream=false" \
    -F "files=@/chemin/vers/produit-1.jpg" \
    -F "files=@/chemin/vers/produit-2.jpg"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 (stream = false) theme={null}
  {
    "uuid": "9b2f6c1e-4a8d-4f3e-9c1a-2d5e7f8a9b0c",
    "message": "Nous sommes ouverts du lundi au vendredi de 9h à 18h.",
    "buttons": null
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.