# CLI

Installation, Anmeldung und alle Befehle der Kommandozeile.

> Early Access: Die Schnittstellen sind als Entwurf dokumentiert. Befehle, Pakete und Endpunkte vor der Nutzung mit uns abstimmen.

Quelle: https://trunkbeam.com/docs/cli

## Installation

```bash
npm install -g @trunkbeam/cli
```

Alternativ ohne Installation mit `npx @trunkbeam/cli`. Voraussetzung ist Node.js 20 oder neuer.

## Anmelden

```bash
trunkbeam login
```

`login` öffnet den Browser zur Bestätigung. Auf Servern ohne Browser setzt du stattdessen die Umgebungsvariable:

```bash
export TRUNKBEAM_API_KEY=tb_live_…
```

Mehrere Konten trennst du mit Profilen, zum Beispiel `trunkbeam login --profile kunde-a` und danach `--profile kunde-a` bei jedem Befehl.

## Globale Optionen

| Option | Wirkung |
| --- | --- |
| `--json` | Ausgabe als JSON, für Skripte |
| `--yes` | Rückfragen überspringen, etwa beim Kauf |
| `--profile <name>` | Anderes Konto verwenden |
| `--help` | Hilfe zu jedem Befehl |

## Befehle

| Befehl | Was er macht |
| --- | --- |
| `signup` | Konto anlegen |
| `login`, `logout` | CLI anmelden oder abmelden |
| `status` | Prüfstatus deines Kontos |
| `verify --docs <datei>` | Unterlagen einreichen |
| `addresses list`, `addresses add` | Adressen für weitere Ortsnetze |
| `numbers search --area <vorwahl>` | Freie Nummern suchen |
| `numbers buy <nummer> --sip <uri>` | Nummer kaufen und verbinden |
| `numbers list` | Deine Nummern mit Status |
| `numbers update <nummer> --sip <uri>` | Ziel ändern |
| `numbers release <nummer>` | Nummer zum Monatsende kündigen |
| `transfer allow <nummer> --to <ziele>` | Erlaubte Ziele für SIP REFER |
| `trunks create --name <name>` | Zugangsdaten für ausgehende Anrufe |
| `calls list` | Letzte Anrufe mit Dauer und Kosten |
| `prices` | Aktuelle Preisliste |
| `usage --month <JJJJ-MM>` | Verbrauch und Kosten eines Monats |
| `keys create`, `keys list`, `keys revoke` | API-Schlüssel verwalten |

## In Skripten

Mit `--json` und `--yes` läuft alles ohne Rückfrage. Beispiel: für jeden neuen Kunden eine Nummer im passenden Ortsnetz holen.

```bash
nummer=$(trunkbeam numbers search --area 089 --json | jq -r '.[0].number')
trunkbeam numbers buy "$nummer" --sip "sip:kunde-42@voice.example" --yes --json
```

## Rückgabewerte

| Code | Bedeutung |
| --- | --- |
| `0` | Erfolgreich |
| `1` | Allgemeiner Fehler |
| `2` | Falsche Eingabe |
| `3` | Nicht angemeldet oder Schlüssel ungültig |
| `4` | Konto noch nicht freigegeben |
| `5` | Ausgabelimit erreicht |
