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

# Commandes et sortie

> Trouver les commandes, construire des corps de requête, envoyer des fichiers et choisir entre JSON, tableaux et JSON Lines

## Trouver les commandes

La CLI propose une commande pour chaque opération de l'API, regroupées par domaines comme les assistants, les appels, les campagnes et les numéros de téléphone.

```bash theme={null}
famulor --help                 # domaines et commandes les plus utiles
famulor calls                  # toutes les commandes du domaine des appels
famulor commands recording     # rechercher des commandes par mot-clé
famulor get-call-recording --help
```

L'aide de chaque commande indique ce qu'elle fait, la requête API qu'elle envoie, ses arguments et options avec leurs types et valeurs autorisées, les champs obligatoires, ainsi qu'un exemple. Les options qui attendent des identifiants indiquent quelle commande les liste, par exemple `famulor list-voices` pour une voix.

Vous pouvez aussi écrire d'abord le domaine, puis le verbe : `famulor assistants create` exécute `create-assistant`, et `famulor calls list` exécute `list-calls`. Lorsqu'un verbe correspond à plusieurs commandes, la CLI liste les commandes possibles au lieu de deviner.

## Arguments et options

Les paramètres de chemin sont des arguments, dans l'ordre où ils apparaissent dans le chemin de l'API. Tout le reste est une option.

```bash theme={null}
famulor get-assistant 3f0c6a8e-1d2b-4c5d-9e8f-0a1b2c3d4e5f
famulor update-assistant 3f0c6a8e-1d2b-4c5d-9e8f-0a1b2c3d4e5f --name "Front desk" --llm-temperature 0.4
famulor list-calls --status completed --limit 20
```

* Une option oui/non accepte `true`/`false` (ainsi que `yes`/`no`, `on`/`off`, `1`/`0`), ou peut être désactivée en la préfixant par `--no-`, par exemple `--no-recording-enabled`.
* Les options qui acceptent une liste prennent des valeurs séparées par des virgules ou peuvent être répétées : `--tags vip,new` ou `--tags vip --tags new`. Pour des valeurs qui contiennent des virgules, passez un tableau JSON : `--tags '["a,b"]'`.
* Les options de texte lisent un fichier lorsque la valeur commence par `@` : `--system-prompt @prompt.md`. Écrivez `@@` pour obtenir un `@` littéral.
* La valeur `null` efface un champ qui l'autorise.

## Corps de requête

Les champs de premier niveau du corps sont des options. Les objets et les listes acceptent du JSON, ou `@file.json` pour le lire depuis un fichier. Pour tout le reste, il existe deux autres façons de construire un corps, et les trois se combinent : d'abord le fichier JSON, puis les options, puis les champs.

<Tabs>
  <Tab title="Fichier JSON ou stdin">
    ```bash theme={null}
    famulor create-assistant --input assistant.json
    cat assistant.json | famulor create-assistant --input -
    ```
  </Tab>

  <Tab title="Champs individuels">
    ```bash theme={null}
    famulor create-assistant --name Mia -F tts_speed=1.1 -F 'tags[]=vip' -F metadata.source=cli -F system_prompt=@prompt.md
    ```

    `-F key=value` reconnaît les nombres, `true`/`false`, `null` et le JSON. Un champ connu de la commande conserve son type déclaré : `-F to_number=4930123456` reste donc du texte. Les chemins avec des points définissent des champs imbriqués, `[]` ajoute un élément à une liste et `@file` lit un fichier. Utilisez `-f key=value` pour toujours envoyer la valeur sous forme de texte. Un champ que la commande ne connaît pas est envoyé avec un avertissement. Lors d’une mise à jour, un objet ou une liste envoyé remplace la valeur enregistrée.
  </Tab>

  <Tab title="Envoi de fichiers">
    ```bash theme={null}
    famulor set-assistant-avatar <id> --file avatar.png
    famulor set-assistant-greeting-audio <id> --file greeting.mp3
    ```
  </Tab>
</Tabs>

Avant l'envoi, la CLI vérifie que le JSON est valide et que tous les champs obligatoires sont renseignés. Un `--input` vide est une erreur : une étape en échec plus tôt dans un pipeline n'envoie donc jamais une requête avec des valeurs par défaut.

## Formats de sortie

Par défaut, la CLI affiche la réponse de l'API au format JSON : avec coloration syntaxique dans un terminal, en texte brut lorsqu'elle est redirigée. La progression et les messages passent par stderr, de sorte que la sortie reste exploitable par d'autres outils.

| Option | Sortie |
| - | - |
| `--output json` | La réponse complète de l'API (par défaut) |
| `--output table` | Un tableau pour les listes, une vue libellé et valeur pour les enregistrements uniques |
| `--output jsonl` | Un objet JSON par ligne pour les éléments d'une liste |

```bash theme={null}
famulor list-assistants --output table
famulor list-calls --columns id,status,to_number,created_at
```

`--columns` implique la sortie en tableau. Les tableaux ne raccourcissent jamais les identifiants, vous pouvez donc les copier dans la commande suivante. Dans un terminal, les heures sont affichées dans votre fuseau horaire ; dans une sortie redirigée, elles restent au format UTC de l'API.

Définissez `FAMULOR_OUTPUT=table` pour afficher des tableaux par défaut dans votre shell.

## Pagination

Les listes renvoient une page à la fois. `--all` parcourt les pages pour vous et renvoie tous les éléments. Avec `--output jsonl`, les éléments sont affichés dès que chaque page arrive.

```bash theme={null}
famulor list-leads <campaign-id> --all --output jsonl > leads.jsonl
```

## Audio et téléchargements

Les commandes qui renvoient de l'audio ou un enregistrement le sauvegardent avec `--output-file` :

```bash theme={null}
famulor get-voice-preview <voice-id> --realtime-variant full_duplex --output-file preview.wav
famulor get-call-recording <call-id> --output-file call.ogg
```

## N'importe quelle requête

`famulor api` envoie n'importe quelle requête avec votre connexion enregistrée, vos options de sortie et les nouvelles tentatives. Les chemins sont relatifs à `/api/v1` :

```bash theme={null}
famulor api GET /assistants --query limit=5
famulor api PATCH /assistants/<id> -F name="Front desk"
```
