> ## 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.

# Befehle und Ausgabe

> Befehle finden, Request-Bodys aufbauen, Dateien hochladen und zwischen JSON, Tabellen und JSON Lines wählen

## Befehle finden

Die CLI hat für jede API-Operation einen Befehl, gruppiert in Bereiche wie Assistenten, Anrufe, Kampagnen und Telefonnummern.

```bash theme={null}
famulor --help                 # Bereiche und die wichtigsten Befehle
famulor calls                  # alle Befehle im Bereich Anrufe
famulor commands recording     # Befehle nach Stichwort durchsuchen
famulor get-call-recording --help
```

Die Hilfe zu jedem Befehl zeigt, was er tut, welche API-Anfrage er sendet, seine Argumente und Optionen mit Typen und erlaubten Werten, welche Felder Pflicht sind, und ein Beispiel. Optionen, die IDs erwarten, nennen den Befehl, der sie auflistet, zum Beispiel `famulor list-voices` für eine Stimme.

Du kannst auch zuerst den Bereich und dann das Verb schreiben: `famulor assistants create` führt `create-assistant` aus, und `famulor calls list` führt `list-calls` aus. Passt ein Verb zu mehr als einem Befehl, listet die CLI die möglichen Befehle auf, statt zu raten.

## Argumente und Optionen

Pfadparameter sind Argumente in der Reihenfolge, in der sie im API-Pfad vorkommen. Alles andere ist eine 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
```

* Eine Ja/Nein-Option nimmt `true`/`false` an (auch `yes`/`no`, `on`/`off`, `1`/`0`) oder lässt sich mit vorangestelltem `--no-` ausschalten, zum Beispiel `--no-recording-enabled`.
* Optionen, die eine Liste annehmen, akzeptieren Kommas oder können mehrfach angegeben werden: `--tags vip,new` oder `--tags vip --tags new`. Für Werte, die Kommas enthalten, übergibst du ein JSON-Array: `--tags '["a,b"]'`.
* Textoptionen lesen eine Datei ein, wenn der Wert mit `@` beginnt: `--system-prompt @prompt.md`. Schreibe `@@` für ein wörtliches `@`.
* Der Wert `null` leert ein Feld, sofern das Feld das zulässt.

## Request-Bodys

Felder auf der obersten Ebene des Bodys sind Optionen. Objekte und Listen nehmen JSON entgegen oder mit `@file.json` den Inhalt einer Datei. Für alles andere gibt es zwei weitere Wege, und alle drei lassen sich kombinieren: zuerst die JSON-Datei, dann die Optionen, dann die Felder.

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

  <Tab title="Einzelne Felder">
    ```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` erkennt Zahlen, `true`/`false`, `null` und JSON. Ein Feld, das der Befehl kennt, behält seinen deklarierten Typ, sodass `-F to_number=4930123456` Text bleibt. Punktpfade setzen verschachtelte Felder, `[]` hängt einen Wert an eine Liste an, und `@file` liest eine Datei ein. Mit `-f key=value` wird der Wert immer als Text gesendet. Ein Feld, das der Befehl nicht kennt, wird mit einer Warnung gesendet. Bei Updates ersetzt ein gesendetes Objekt oder eine Liste den gespeicherten Wert.
  </Tab>

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

Vor dem Senden prüft die CLI, ob das JSON gültig ist und alle Pflichtfelder gesetzt sind. Ein leeres `--input` ist ein Fehler, sodass ein fehlgeschlagener früherer Schritt in einer Pipeline nie eine Anfrage mit Standardwerten sendet.

## Ausgabeformate

Standardmäßig gibt die CLI die API-Antwort als JSON aus: im Terminal mit Syntaxhervorhebung, bei Weiterleitung per Pipe als reiner Text. Fortschritt und Meldungen gehen an stderr, damit die Ausgabe für andere Tools sauber bleibt.

| Option | Ausgabe |
| - | - |
| `--output json` | Die vollständige API-Antwort (Standard) |
| `--output table` | Eine Tabelle für Listen, eine Ansicht aus Bezeichnung und Wert für einzelne Datensätze |
| `--output jsonl` | Ein JSON-Objekt pro Zeile für Listeneinträge |

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

`--columns` schaltet automatisch auf Tabellenausgabe um. Tabellen kürzen IDs nie, sodass du sie in den nächsten Befehl kopieren kannst. Im Terminal werden Zeiten in deiner Zeitzone angezeigt; bei Weiterleitung per Pipe bleiben sie im UTC-Format der API.

Setze `FAMULOR_OUTPUT=table`, um Tabellen in deiner Shell zum Standard zu machen.

## Pagination

Listen liefern jeweils eine Seite. `--all` ruft die Seiten für dich nacheinander ab und gibt alle Einträge zurück. Mit `--output jsonl` werden die Einträge ausgegeben, sobald die jeweilige Seite eintrifft.

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

## Audio und Downloads

Befehle, die Audio oder eine Aufzeichnung zurückgeben, speichern diese mit `--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
```

## Beliebige Anfragen

`famulor api` sendet jede beliebige Anfrage mit deiner gespeicherten Anmeldung, deinen Ausgabeoptionen und automatischen Wiederholungen. Pfade sind relativ zu `/api/v1`:

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