Alle Artikel anzeigen
Einen Agenten über die API erstellen
Technische Referenz zum programmatischen Erstellen von Kollie-Agenten: Endpunkte, Konfigurationsschlüssel, Skill-Typen, Reihenfolge und Sicherheit.
Zuletzt aktualisiert:
Auf dieser Seite
Technische Referenz zum programmatischen Erstellen von Agenten. Was in die Felder gehört, wird hier nicht behandelt, und die Regeln sind gleich, egal wie der Agent erstellt wird. Siehe So bauen Sie Ihren KI-Telefonagenten.
Basis-URL: https://api.kollie.ai. Die Swagger-Oberfläche finden Sie unter derselben Adresse.
Authentifizierung
Erzeugen Sie Ihren eigenen API-Schlüssel auf der Plattform unter API Keys im linken Menü. Dieser Schlüssel authentifiziert jede Anfrage. Es gibt keinen Schritt zur Token-Ausgabe und nichts weiter zu beschaffen.
Einen Agenten bauen: zwei Schritte
Schritt 1: den Agenten anlegen
POST /api/v1/agents
{
"name": "SALES-EN-DEMOBOOKING",
"organization_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"config": { }
}
Gibt den angelegten Agenten zurück, inklusive seiner id, die Sie für Schritt 2 brauchen.
Alles über den Agenten steht in config.
Die drei Textfelder:
config-Schlüssel | Feld in der Oberfläche |
|---|---|
initial_message | Vorstellung |
business_info | Unternehmensinformationen |
main_objective | Hauptziel |
Diese drei enthalten den gesamten Fließtext, und für alles darin gelten die Regeln aus So bauen Sie Ihren KI-Telefonagenten. Nichts davon wird lockerer, nur weil die Konfiguration als JSON statt über ein Formular kommt.
Alles andere in config ist eine Einstellung. Legen Sie diese fest; beschreiben Sie sie nie in den Textfeldern.
config-Schlüssel | Steuert |
|---|---|
language | Kennung für Stimme und Sprache. Eine pro Agent. |
temperature | Kreativität: wie streng der Prompt befolgt wird. |
model | Modellauswahl. |
recording | Anrufaufzeichnung. |
notifications | Zustellung per E-Mail / SMS / WhatsApp. Objekt mit email, sms, whatsapp, jeweils {enabled, from, to}. |
hangup_on_voicemail | Mailbox-Erkennung. |
allow_agent_to_be_cut_off | Barge-in: ob der Anrufer unterbrechen kann. |
adaptive_interruption, transcriber | Erkennung und Behandlung von Unterbrechungen. |
stt_keyterms | Fachbegriffe (Industry Terms). Liste von Wörtern, die der Spracherkennung als Referenz für alles dient, was mehrdeutig klingt. |
from_phone, vonage_app_id | Telefonie. Werden beim Verknüpfen der Rufnummer gesetzt, nicht hier. |
version | Version des Konfigurationsschemas. |
example_dialog | Veraltet, wird nicht mehr verwendet. Leer lassen. |
Schritt 2: jeden Skill anhängen
POST /api/v1/agents/{agent_id}/skills, einmal pro Skill. Derselbe Endpunkt aktualisiert auch die Konfiguration eines bestehenden Skills.
{
"type": "call_transfer",
"enabled": true,
"config": {
"toPhone": "+3120XXXXX01",
"description": "Sales team, showroom floor. Use this number when the caller is asking about getting a vehicle: availability, delivery times, a price or lease quote, trade-in value, financing, or booking a test drive."
}
}
Ein Skill, der existiert, aber nicht enabled ist, bewirkt nichts.
Skill-Typen
Geprüft an einem Live-Agenten, der alle Typen nutzt.
type | exec_order | Name in der Oberfläche | config |
|---|---|---|---|
api | pre_call | API Aufrufen — vor dem Anruf | url, method, qs |
api | post_call | API Aufrufen — nach dem Anruf | url, method, qs |
external_action | during_call | Externe Aktion / API Aufrufen — während des Anrufs | name, description, url, method, params[], header, results[] |
call_transfer | — | Anruf weiterleiten | toPhone, description |
scheduling | — | Termin buchen | integration_id |
round_robin | — | Round-Robin-Terminplanung | data.integrations[] |
extract_information | — | Informationen extrahieren | data[] aus {type, name, description} |
hubspot | post_call | HubSpot-Synchronisierung | data.integrations[], jeweils {integration_id, contact_custom_fields, calls_custom_fields} |
hubspot_contact_lookup | pre_call | Kontakt nach Telefonnummer abrufen | integration_id |
Vier Dinge, die diese Tabelle klärt:
- „Vor dem Anruf" und „Nach dem Anruf" sind ein Typ,
api, nur durchexec_orderunterschieden. Nicht zwei Skills. external_actionist der Modus „während des Anrufs" und ein eigenständiger Typ mit den Feldern, die dieser Modus braucht: einem Aktions-name, den der Agent aufruft, einerdescription, anhand derer er entscheidet, wann,params[]für die Anfrage undresults[]für die Antwort.- „Kontakt nach Attribut abrufen" hat keinen eigenen Typ. Es ist eine
external_action, die auf den Suchendpunkt für Kontakte zeigt. Nur die stille Abfrage per Telefonnummer hat einen eigenen Typ. exec_orderhat nur beiapiundexternal_actioneine Bedeutung, dort bestimmt es, wann die Anfrage ausgelöst wird. Bei den anderen Typen wird es gespeichert, hat aber keine zeitliche Bedeutung: Eincall_transfermitpost_callsagt nichts aus.
Welche Typen eine Beschreibung haben, die der Agent liest: call_transfer, external_action und jedes Feld in extract_information. Für diese gelten die Schreibregeln. Die übrigen sind Endpunkte und Integrations-IDs, die der Agent nicht interpretiert.
Fachbegriffe sind kein Skill. Sie sind stt_keyterms in der Agentenkonfiguration.
Weitere Endpunkte
| Methode | Pfad | Verwendung |
|---|---|---|
GET | /api/v1/agents | Agenten auflisten. |
GET | /api/v1/agents/{agent_id} | Einen Agenten mit seinen Skills auslesen. Der schnellste Weg, die echte Struktur eines funktionierenden Agenten zu sehen. |
PUT | /api/v1/agents/{agent_id} | Einen Agenten aktualisieren. |
DELETE | /api/v1/agents/{agent_id} | Einen Agenten löschen. |
DELETE | /api/v1/agents/{agent_id}/skills/{skill_id} | Einen Skill entfernen (Soft Delete). |
POST | /api/v1/agents/{agent_id}/call | Einen ausgehenden Anruf auslösen. Hier werden die Parameter für {{ platzhalter }} übergeben. |
POST | /api/v1/agents/{agent_id}/webcall | Einen Webanruf auslösen. |
POST | /api/v1/agents/{agent_id}/campaign | Eine ausgehende Kampagne erstellen. |
GET | /api/v1/agents/{agent_id}/calls | Anrufverlauf des Agenten. |
Reihenfolge
POST /api/v1/agentsmitname,organization_idund einer vollständigenconfig.- Die
idaus der Antwort übernehmen. POST /api/v1/agents/{id}/skillseinmal pro Skill, jeweils mitenabled: true.GET /api/v1/agents/{id}und prüfen, ob das Zurückgegebene dem Gesendeten entspricht.- Einen Testanruf machen.
Sie steuern das über ein Skript oder ein LLM? Die Inhaltsregeln aus So bauen Sie Ihren KI-Telefonagenten gelten unverändert, und die automatische Prüfung vor dem Speichern ist so geschrieben, dass sie als Validierungsschritt vor Schritt 1 laufen kann.
Sicherheit
Ihr API-Schlüssel ist geheim. Bewahren Sie ihn in einer Umgebungsvariable oder einem Secrets-Manager auf: nie in der Versionsverwaltung, nie in einem Ticket, nie in einem geteilten Dokument. Wurde ein Schlüssel einem Modell in einer Unterhaltung gezeigt, gilt er als offengelegt und muss ersetzt werden. Das ist hier besonders wichtig: Steuert ein LLM Ihr Skript, soll es das Skript steuern, nicht den Schlüssel kennen.
Schreiben Sie nie Zugangsdaten in business_info, main_objective oder eine Skill-description. Das sind Prompt-Inhalte. Alles darin liest der Agent bei jedem Anruf, und was der Agent gelesen hat, kann man ihn dazu bringen auszusprechen.
Zugangsdaten, die ein Skill wirklich braucht, gehören in die Konfiguration dieses Skills: bei einer external_action in das header-Objekt mit name und value. Das ist der richtige Ort, und der einzige.
Aber bedenken Sie: Skill-Zugangsdaten sind lesbar. GET /api/v1/agents/{agent_id} gibt die vollständige Konfiguration jedes Skills zurück, Header-Werte im Klartext eingeschlossen. Wer einen Agenten über die API lesen oder sein JSON exportieren kann, kann die Schlüssel darin lesen. Deshalb:
- Geben Sie jedem Skill den kleinstmöglichen Schlüssel, nie einen geteilten oder einen mit Admin-Rechten.
- Behandeln Sie jedes exportierte Agenten-JSON als geheim.
- Entfernen Sie Header-Werte, bevor Sie eine Konfiguration in ein Ticket, einen Chat, ein Dokument oder ein Modell einfügen.
Achten Sie auf results[] bei external_action. Bleibt es leer, erhält der Agent die gesamte API-Antwort: jedes Feld, das der Endpunkt zurückgibt, inklusive interner IDs und Debug-Ausgaben. Filtern ist optional. Ordnen Sie nur die Felder zu, die Sie wirklich brauchen, und halten Sie die Liste kurz: Das kostet eine Zeile Konfiguration und verhindert, dass von Angreifern steuerbarer Freitext in nicht benötigten Feldern als Inhalt beim Agenten ankommt.
{{ platzhalter }}-Tokens sind keine Zugangsdaten. Sie sind Lückentexte, damit eine gespeicherte Vorlage für einen anderen Kunden wiederverwendet werden kann. Setzen Sie nie einen echten Schlüssel dafür ein.
Verwandte Artikel
- So bauen Sie Ihren KI-TelefonagentenSo erstellen Sie einen KI-Telefonagenten in der Kollie Web-App: was in welches Feld gehört und was Sie besser weglassen.
- Eine ausgehende Anrufkampagne einrichtenLassen Sie Ihren KI-Agenten Leads, Interessenten oder Kunden anrufen: Kampagne erstellen, Leads hochladen, starten und Ergebnisse auswerten.
- Anrufberichte und Dashboards ansehenVerfolgen Sie Agentenaktivität, Kampagnenerfolg und Nutzung im Bereich Analysen und exportieren Sie Transkripte und Zusammenfassungen.
Brauchen Sie weitere Hilfe?
Sie finden nicht, wonach Sie suchen? Senden Sie uns ein Ticket – unser Support-Team hilft Ihnen gerne beim Einrichten und Verbessern Ihrer Agenten.
Support-Ticket erstellen