Basis-URL
app.famulor.io durch diese Domain. Die Pfade bleiben gleich.
API Access
REST-Anfragen benötigen API Access über den Workspace-Plan oder ein wiederkehrendes Add-on. Wird der Zugriff entfernt, bleiben bestehende API-Keys und OAuth-Zugangsdaten für Workspace-Administratoren zur Prüfung und zum Widerruf verfügbar; reguläre/api/v1-Anfragen liefern jedoch 403 api_access_required.
Nach einer fehlgeschlagenen Planzahlung bleiben POST /api/v1/billing/invoice-payment und POST /api/v1/billing/portal mit gültigen Zugangsdaten erreichbar, damit ein Owner die Abrechnung wiederherstellen kann. Authentifizierungs-, Rollen- und Scope-Prüfungen gelten weiterhin.
Authentifizierung
Sende ein Bearer-Token imAuthorization-Header:
- Workspace API keys (
fam_...) – erstelle sie unter Settings → API & MCP für Server-zu-Server-Integrationen. Der vollständige Key wird einmal angezeigt. Das Dashboard hat keine Scope-Auswahl, daher trägt ein dort erstellter Key immer alle Scopes. Um einen eingeschränkteren Key zu erzeugen, rufePOST /api/v1/api-keysoderPOST /api/v1/workspaces/{workspace_id}/api-keysmit einem explizitenscopes-Array auf – die Scopes des neuen Keys müssen eine Teilmenge der Zugangsdaten sein, die ihn erstellen. - OAuth 2.0 access tokens (
fam_at_...) – verwende Authorization Code mit PKCE-S256 für Anwendungen, die im Namen eines angemeldeten Nutzers handeln.
Umgang mit Keys
- Speichere Keys in Umgebungsvariablen oder einem Secrets-Manager, nie in der Versionskontrolle.
- Beschränke jeden Key auf das, was die Integration wirklich braucht – ein Key, der nur Anrufe liest, sollte nicht zusätzlich
assistants:writehaben. Im Dashboard erstellte Keys haben immer vollen Zugriff; nutze den API-Weg von oben, um einen eingeschränkten Key zu erzeugen. - Rotiere Keys regelmäßig und sofort, sobald jemand mit Zugriff auf einen Key das Team verlässt.
- Das Widerrufen eines Keys unter Settings → API & MCP wirkt sofort; bereits laufende Anfragen können trotzdem noch abgeschlossen werden.
Anforderungen an OAuth-Clients
Ein selbst gebauter Client steuert die Authorization- und Token-Endpunkte direkt an:127.0.0.1 verwenden. OAuth-Anfragen müssen PKCE-S256 nutzen und dürfen nur für den Client registrierte Scopes anfordern. Bei einer Ratenbegrenzung wartest du die in der Antwort angegebene Zeit und versuchst es erneut.
Der Client verwendet entweder für deinen Workspace vorab genehmigte Zugangsdaten oder registriert sich dynamisch selbst über POST /api/oauth/register – gib dabei zwischen 1 und 10 eindeutige redirect_uris an. Endpunkte, unterstützte Scopes und Grant-Typen lassen sich unter /.well-known/oauth-authorization-server ermitteln.
Ein dynamisch registrierter Client, den der Nutzer noch nicht freigegeben hat, erhält keine Fehler an seiner Redirect-URL: Eine ungültige Autorisierungsanfrage wird stattdessen direkt auf der Autorisierungsseite beantwortet. Nach der Freigabe erhalten spätere Anmeldungen nur die Tool-Gruppen, die der Nutzer ausgewählt hat; fordert der Client mehr an, erscheint der Zustimmungsbildschirm erneut.
Access-Tokens werden über den refresh_token-Grant erneuert. Refresh-Tokens rotieren bei jeder Verwendung: Das Anfordern eines neuen Access-Tokens stellt auch ein neues Refresh-Token aus und macht das gesendete sofort ungültig.
Antwortformat
Erfolgreiche Antworten enthalten das Ergebnis indata und optional meta:
Pagination
Listen-Endpunkte verwendenlimit und offset:
Mit
meta.pagination.total erkennst du, ob weitere Seiten verfügbar sind.
Fehler
Fehlschläge liefern einen stabilen Code und eine lesbare Meldung:White-Label-Kundenverwaltung
Berechtigte Reseller können über dieplatform-Endpunkte ihre eigenen Endkunden verwalten, Kunden-API-Tokens ausstellen und widerrufen, Credits übertragen und ihre Custom Domain verwalten. Diese Endpunkte benötigen die Scopes platform:read oder platform:write; Custom-Domain-Aktionen verwenden den entsprechenden Settings-Scope.
Beispiele findest du im Leitfaden zur White-Label-API.
CLI
Jede API-Operation ist auch ein Befehl in der Famulor CLI. Dein API-Key wird dabei im Schlüsselbund deines Systems gespeichert:MCP
Dieselben kundenseitigen Funktionen stehen als KI-Tools über den MCP-Endpunkt bereit:Realtime-Varianten und Gesprächsstimmen
Erstelle oder aktualisiere einen Assistenten mitmode: "realtime" und realtime_variant: "full_duplex", um die Variante bei entsprechendem Workspace-Zugriff zu aktivieren. Ohne Variante bleibt bei neuen Assistenten Standard aktiv; bei Updates bleibt die vorhandene Variante erhalten. Das Denkmodell wird zentral verwaltet. Gespeicherte Pipeline-Modellpräferenzen des Assistenten überschreiben es nicht.
Mit GET /api/v1/voices?mode=realtime&realtime_variant=full_duplex findest du kompatible Stimmen. Übergib die zurückgegebene Stimmen-id als realtime_voice; Full Duplex verwendet sie auch für Begrüßungen, Einwilligung und Tool-Ansagen. Behalte tts_voice als gespeicherte Pipeline-Ausweichstimme. Hochgeladene Begrüßungen behalten ihre aufgenommene Stimme. Stimmenkennungen sind undurchsichtig; leite daraus keinen Anbieter ab. Nicht verfügbare Stimmen oder Varianten werden abgelehnt.
Für TTS-Stimmen verwende GET /api/v1/voices?mode=tts&language=de ohne realtime_variant. mode=tts zusammen mit einer Realtime-Variante ergibt 400. CLI: famulor list-voices --mode tts --language de; für Full Duplex: famulor list-voices --mode realtime --realtime-variant full_duplex --language de.
Wenn eine native Hörprobe verfügbar ist, enthält preview_url einen relativen API-Pfad. Ergänze deine API-Domain und lade die Datei mit demselben Bearer-Token und dem Scope voices:read. GET /api/v1/voices/{id}/preview?realtime_variant=full_duplex liefert WAV-Audio, ohne eine neue Hörprobe zu generieren. Der MCP-Stimmenkatalog enthält denselben Vorschau-Verweis.
Gespeicherte TTS-Hörproben erhältst du über GET /api/v1/voices/{id}/preview?mode=tts oder per CLI mit famulor get-voice-preview --id <voice-id> --mode tts. Verwende die zurückgegebene preview_url; bei fehlender Hörprobe steht dort null. Der Download erzeugt kein neues Audio.
Für Standard Realtime verwende realtime_variant=standard mit dem zurückgegebenen Vorschau-Link oder famulor get-voice-preview --id <voice-id> --realtime-variant standard. Gespeichertes Audio kann MP3 oder WAV sein. Mit Zugriff auf die Modellauswahl enthält der Standard-Katalog die Stimmen aller aktivierten, mit der Workspace-Region kompatiblen Modelle. Beim Wechsel zu einer Stimme eines anderen Modells wählst du im selben Assistant-Update ein kompatibles Modell.
Wenn dein Plan die Modellauswahl erlaubt, listet GET /api/v1/models?type=realtime&realtime_variant=full_duplex kompatible Sprachmodelle auf. Eine Auswahl des Denkmodells wird dadurch nicht freigeschaltet. Die Usage-Antwort enthält aktuelle Credit-Preise. Bei gemeinsamer Nutzung fallen die Aufpreise für Full Duplex und Avatar zusammen an.
Regionale Verfügbarkeit: Full Duplex richtet sich nach den freigeschalteten Modellen der gewählten Workspace-Region, einschließlich EU, US und Global. Voraussetzung sind Beta-Zugriff, Realtime-Zugriff im Plan sowie passende Sprach- und Denkmodelle. Editor, API und MCP verwenden dieselben Verfügbarkeitsregeln.
MCP verwendet dieselben Assistentenfelder. Das Tool get_voices akzeptiert mode und realtime_variant; get_models akzeptiert realtime_variant. Unterstützte Einstellungen und Einschränkungen findest du unter Engine-Modi.
Anfragelimits
REST-Anfragen teilen sich über alle Endpunkte hinweg ein festes Minutenbudget: standardmäßig 120 Anfragen pro API-Key oder OAuth-Zugriffstoken und 600 Anfragen pro Workspace. Dein Plan kann andere Limits vorsehen. Zusätzliche Keys oder ein Domainwechsel erhöhen das Workspace-Budget nicht. Ein separates Limit von 1.800 Anfragen pro Minute und IP-Adresse schützt die Prüfung der Zugangsdaten; Integrationen hinter derselben IP teilen sich dieses Limit. Ist ein Budget aufgebraucht, antwortet die API mit429, error.code: "rate_limited" und dem Header Retry-After mit der Wartezeit in Sekunden. Pausiere Anfragen entsprechend und verwende für Wiederholungen zunehmende Wartezeiten mit einer kleinen Zufallsverzögerung. Vermeide ständiges Polling und nutze nach Möglichkeit Webhooks.
Ist der Anfrageschutz vorübergehend nicht verfügbar, antwortet die API mit 503 und einer Wartezeit. Für Dashboard und MCP gelten eigene Zugriffs- und Anfrageregeln.