Zum Hauptinhalt springen

API-Referenz

Vollständige API-Dokumentation zur Integration von Hanc.AI in Ihre Anwendungen. Verwalten Sie Agenten, rufen Sie Anrufdaten ab, tätigen Sie Anrufe und steuern Sie jeden Teil der Plattform programmatisch.

Jeder Abschnitt unten liefert Ihnen die HTTP-Methode und den Pfad, die Parameter (Pfad, Query und Body), eine sofort ausführbare Beispielanfrage sowie eine repräsentative Beispielantwort, sodass Sie integrieren können, ohne die Payload-Formen erraten zu müssen.


Kurzüberblick

Basis-URLhttps://api.hanc.ai
VersionspräfixAlle Routen sind mit /v1 präfixiert
AuthentifizierungAPI-Key über den Header x-api-key
FormatJSON (Anfrage und Antwort)

Erstellen Sie einen API-Key über Integration → API Keys im Dashboard. Sie können bis zu 3 Keys pro Nutzer haben — siehe den Abschnitt API Keys in Integrationen für Einrichtung, Berechtigungen und Sicherheitshinweise.

curl -X GET "https://api.hanc.ai/v1/agent/list" \
-H "x-api-key: YOUR_API_KEY"

Authentifizierung

Senden Sie Ihren Key im Header x-api-key bei jeder Anfrage:

x-api-key: YOUR_API_KEY

Der Key wird dem Nutzer zugeordnet, dem er gehört, und jede Anfrage wird automatisch auf diesen Nutzer beschränkt — Sie übergeben nie eine Nutzer-ID. Ein fehlender oder ungültiger Key wird mit 401 Unauthorized / 403 Forbidden abgelehnt.

tipp

Bewahren Sie Keys serverseitig auf. Betten Sie einen API-Key niemals in einen Browser, eine mobile App oder einen Client ein, den der Endnutzer inspizieren kann. Falls ein Key durchsickert, widerrufen Sie ihn unter Integration → API Keys und stellen Sie einen neuen aus.


Konventionen

Einige Regeln gelten für die gesamte API. Wenn Sie diese einmal lesen, ersparen Sie sich Debugging-Zeit:

  • Versionspräfix — jeder Pfad beginnt mit /v1 (z. B. https://api.hanc.ai/v1/agent/list).
  • IDs sind Mongo-ObjectIds — jede :id (und :agentActionId, :agentToolId usw.) muss ein 24-stelliger Hex-String sein. Fehlerhafte IDs geben 400 Bad Request zurück.
  • Unbekannte Body-Felder werden entfernt — die API validiert Anfrage-Bodys und verwirft stillschweigend Eigenschaften, die sie nicht erkennt, sodass ein Tippfehler in einem Feldnamen ignoriert statt gespeichert wird.
  • Datumsangaben — Analytics-/Export-Endpunkte nehmen date_from / date_to als YYYY-MM-DD entgegen. date_to ist einschließlich bis zum Ende dieses Tages.
  • Array-Query-Parameter — wo ein Filter mehrere Werte akzeptiert (z. B. agent_ids, direction), können Sie den Schlüssel wiederholen (?direction=inbound&direction=outbound) oder ihn kommagetrennt angeben (?direction=inbound,outbound).
  • Zeitstempel in Antworten sind Epoch-Millisekunden, sofern sie nicht als ISO-8601-String dargestellt werden.

Endpunkt-Index

Eine schnelle Übersicht über alles Verfügbare. Ausführliche Doku zu jedem Punkt folgt unten.

Anrufe

AktionMethodeEndpunkt
Anrufe auflistenGET/v1/call/list
Anrufdetails (Transkript, Sentiment, Zusammenfassung)GET/v1/call/:id
Allgemeine Analytics (Summen über einen Zeitraum)GET/v1/call/general-metrics
Tägliche AnalyticsGET/v1/call/daily-metrics
Sentiment-StatistikenGET/v1/call/sentiment-stats
KostenaufschlüsselungGET/v1/call/costs-breakdown
Anrufe exportieren (CSV)GET/v1/call/list/export
Kosten exportieren (CSV)GET/v1/call/costs-breakdown/export
Einen Telefonanruf tätigenPOST/v1/call/make-phone-call
Einen Web-Anruf tätigenPOST/v1/call/make-web-call

Agenten

AktionMethodeEndpunkt
Agenten auflistenGET/v1/agent/list
AgentendetailsGET/v1/agent/:id
Agent erstellenPOST/v1/agent
Agent aktualisierenPATCH/v1/agent/:id
Agent löschenDELETE/v1/agent/:id
Anrufstatistiken des AgentenGET/v1/agent/:id/call-stats
Agenten-Vorlagen auflistenGET/v1/agent/agent_template/list
Actions auflistenGET/v1/agent/:id/actions
Action hinzufügenPOST/v1/agent/:id/actions
Action aktualisierenPATCH/v1/agent/:id/actions/:agentActionId
Action löschenDELETE/v1/agent/:id/actions/:agentActionId
Tools auflistenGET/v1/agent/:id/tools
Tool hinzufügenPOST/v1/agent/:id/tools
Tool aktualisierenPATCH/v1/agent/:id/tools/:agentToolId
Tool löschenDELETE/v1/agent/:id/tools/:agentToolId

Knowledge Base

AktionMethodeEndpunkt
Knowledge Bases auflistenGET/v1/knowledge-base/list
Erstellen (mit erster Datei)POST/v1/knowledge-base
Eine einzelne Datei hinzufügenPOST/v1/knowledge-base/:id/file
Mehrere Dateien hinzufügenPOST/v1/knowledge-base/:id/files
Datei(en) löschenDELETE/v1/knowledge-base/:id/file
Agenten zuweisenPUT/v1/knowledge-base/:id/agents

Telefonnummern

AktionMethodeEndpunkt
Nummern auflistenGET/v1/phone-number/list
Verfügbare Nummern (nach Land)GET/v1/phone-number/available
Eine Nummer kaufenPOST/v1/phone-number/buy
Aus Twilio importierenPOST/v1/phone-number/import-twilio
Mit SIP verbindenPATCH/v1/phone-number/connect-to-sip

Stimmen · Abonnement · Kunden · Workspaces

AktionMethodeEndpunkt
Stimmen auflistenGET/v1/voice/list
AbonnementdetailsGET/v1/subscription
Automatische Aufladung konfigurierenPATCH/v1/subscription/auto-top-up
Aufladebetrag festlegenPATCH/v1/subscription/top-up-amount
Kunden auflistenGET/v1/customer/list
KundendetailsGET/v1/customer/:id
Kunde erstellenPOST/v1/customer
Kunde aktualisierenPATCH/v1/customer/:id
Kunde löschenDELETE/v1/customer/:id
Workspaces auflistenGET/v1/workspaces/list
Workspace erstellenPOST/v1/workspaces
Workspace-DetailsGET/v1/workspaces/:id
Workspace aktualisierenPATCH/v1/workspaces/:id
Workspace löschenDELETE/v1/workspaces/:id
Mitglied einladenPOST/v1/workspaces/:workspace_id/invite-member
Mitglied entfernenDELETE/v1/workspaces/:workspace_id/remove-member

Anrufe

Verwalten und analysieren Sie Sprachanrufe: Anrufe auflisten und inspizieren (Transkript, Sentiment, Zusammenfassung), aggregierte Kennzahlen abrufen, CSV-Berichte exportieren sowie ausgehende Telefon- und Web-Anrufe tätigen.

Anrufe auflisten

GET /v1/call/list

Listet Anrufe für Ihr Konto mit Filterung, Sortierung und Paginierung auf.

Query-Parameter

NameTypErforderlichBeschreibung
agent_idsstring[]NeinNach einer oder mehreren Agenten-IDs filtern (wiederholen oder kommagetrennt).
agent_idstringNeinNach einem einzelnen Agenten filtern (veraltet; bevorzugen Sie agent_ids).
directionenum[]Neininbound und/oder outbound.
call_statusenum[]Neinstarted, success, failed, pending.
call_typeenum[]Neinphone, web.
customer_idstringNeinNach Kunde filtern.
workspace_idstringNeinNach Workspace filtern.
date_from / date_tostringNeinZeitraumfilter (YYYY-MM-DD).
sort_orderenumNeinasc oder desc.
limitnumberNeinMaximale Anzahl zurückzugebender Ergebnisse.
skipnumberNeinZu überspringende Ergebnisse (Paginierungs-Offset).

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/list" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "agent_ids=507f1f77bcf86cd799439042" \
--data-urlencode "direction=inbound" \
--data-urlencode "sort_order=desc" \
--data-urlencode "limit=10"

Beispielantwort200 OK

[
{
"_id": "507f1f77bcf86cd799439011",
"call_type": "phone",
"agent_id": "507f1f77bcf86cd799439042",
"agent_name": "Customer Support Agent",
"call_status": "success",
"call_from": "+12345678900",
"call_to": "+12345678911",
"direction": "inbound",
"start_timestamp": 1703302407333,
"end_timestamp": 1703302428855,
"recording_url": "https://recordings.example.com/12345",
"disconnection_reason": "user_hangup",
"sentiment": { "sentiment": "positive", "explanation": "Friendly, helpful tone." },
"call_summary": "Customer issue resolved.",
"task_achieved": true
}
]

Anrufdetails abrufen

GET /v1/call/:id

Ruft die vollständigen Details eines Anrufs ab — Transkript, Sentiment, Zusammenfassung, Guthaben und Leistungskennzahlen.

Pfadparameter

NameTypErforderlichBeschreibung
idstringJaID des Anrufs.

Beispielanfrage

curl "https://api.hanc.ai/v1/call/507f1f77bcf86cd799439011" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

{
"_id": "507f1f77bcf86cd799439011",
"call_type": "phone",
"agent_id": "507f1f77bcf86cd799439042",
"agent_name": "Customer Support Agent",
"call_status": "success",
"call_from": "+12345678900",
"call_to": "+12345678911",
"direction": "inbound",
"start_timestamp": 1703302407333,
"end_timestamp": 1703302428855,
"recording_url": "https://recordings.example.com/12345",
"transcription": [
{ "speaker": "agent", "content": "Hello, how can I help?", "timestamp": 1703302407333 },
{ "speaker": "user", "content": "I need help with my order.", "timestamp": 1703302410000 }
],
"sentiment": { "sentiment": "positive", "explanation": "Friendly, helpful tone." },
"call_summary": "Customer issue resolved.",
"task_achieved": true,
"call_credits_details": {
"phone_call_credits": 1,
"web_call_credits": 0,
"text_message_credits": 0,
"call_forwarding_credits": 0
}
}

Gibt 404 zurück, wenn der Anruf nicht existiert oder nicht zu Ihrem Konto gehört.

Allgemeine Kennzahlen

GET /v1/call/general-metrics

Aggregierte Summen (Anrufanzahl, Gesamt- und Durchschnittsdauer) über einen Zeitraum.

Query-Parameter

NameTypErforderlichBeschreibung
date_fromstringJaStartdatum (YYYY-MM-DD).
date_tostringJaEnddatum (YYYY-MM-DD, einschließlich).
agent_id / agent_idsstring(s)NeinAuf einen oder mehrere Agenten beschränken.
customer_idstringNeinNach Kunde filtern.
workspace_idstringNeinNach Workspace filtern.
direction / call_status / call_typeenum[]NeinDieselben Filter wie bei Anrufe auflisten.

Das Weglassen von date_from oder date_to gibt 400 Bad Request zurück.

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/general-metrics" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-31"

Beispielantwort200 OK

{ "total_calls": 128, "total_duration": 45230, "average_duration": 353 }

Tägliche Kennzahlen

GET /v1/call/daily-metrics

Tägliche Gesamtanrufdauer über einen Zeitraum — ideal zur Darstellung von Trends.

Query-Parameter — dieselben wie bei Allgemeine Kennzahlen (date_from/date_to erforderlich, plus die optionalen Filter für Agent/Kunde/Workspace/Richtung/Status/Typ).

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/daily-metrics" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-07"

Beispielantwort200 OK

[
{ "date": "2026-05-01", "total_duration": 5400 },
{ "date": "2026-05-02", "total_duration": 7320 },
{ "date": "2026-05-03", "total_duration": 0 }
]

Sentiment-Statistiken

GET /v1/call/sentiment-stats

Anzahl der Anrufe nach Sentiment für einen Agenten über einen Zeitraum.

Query-Parameter

NameTypErforderlichBeschreibung
agent_idstringJaAgent, über den berichtet werden soll.
date_fromstringJaStartdatum.
date_tostringJaEnddatum (einschließlich).

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/sentiment-stats" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "agent_id=507f1f77bcf86cd799439042" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-31"

Beispielantwort200 OK

{ "positive": 84, "negative": 12, "neutral": 32 }

Kostenaufschlüsselung

GET /v1/call/costs-breakdown

Kosten-/Nutzungsaufschlüsselung (Anrufe, Minuten, Guthaben, Tokens, Detail pro Modell), gruppiert nach Nutzer, Agent oder Workspace.

Query-Parameter

NameTypErforderlichBeschreibung
date_fromstringJaStartdatum.
date_tostringJaEnddatum (einschließlich).
group_byenumNeinuser (Standard), agent oder workspace.
customer_idstringNeinNach Kunde filtern (Agenturzugriff).
workspace_idstringNeinNach Workspace filtern.

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/costs-breakdown" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-31" \
--data-urlencode "group_by=agent"

Beispielantwort200 OK

{
"breakdown": [
{
"agent_id": "507f1f77bcf86cd799439042",
"agent_name": "Customer Support Agent",
"total_calls": 64,
"total_duration_minutes": 380,
"credits": { "phone_call": 60, "web_call": 4, "text_message": 0, "call_forwarding": 1, "total": 65 },
"tokens": { "input": 920000, "output": 120000, "total": 1040000 }
}
],
"totals": { "total_calls": 64, "total_duration_minutes": 380, "total_credits": 65, "total_tokens": 1040000 },
"period": { "from": 1746057600000, "to": 1748735999999 }
}

Anrufe exportieren (CSV)

GET /v1/call/list/export

Laden Sie jeden Anruf in einem Zeitraum als CSV-Datei herunter (mit Token-Detail pro Anruf und pro Modell).

Query-Parameter

NameTypErforderlichBeschreibung
date_fromstringJaStartdatum.
date_tostringJaEnddatum (einschließlich).

Antwort — eine CSV-Datei (Content-Type: text/csv), ausgeliefert als Anhang mit dem Namen call-details_<date_from>_<date_to>.csv.

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/list/export" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-31" \
-o call-details.csv

Kosten exportieren (CSV)

GET /v1/call/costs-breakdown/export

Laden Sie die Kostenaufschlüsselung als CSV-Datei herunter.

Query-Parameter — dieselben wie bei Kostenaufschlüsselung (date_from/date_to erforderlich; optional group_by, customer_id, workspace_id).

Antwort — eine CSV-Datei, ausgeliefert als costs-breakdown_<date_from>_<date_to>.csv.

Beispielanfrage

curl -G "https://api.hanc.ai/v1/call/costs-breakdown/export" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-31" \
--data-urlencode "group_by=agent" \
-o costs-breakdown.csv

Einen Telefonanruf tätigen

POST /v1/call/make-phone-call

Tätigen Sie einen ausgehenden Telefonanruf von einem Ihrer Agenten.

Anfrage-Body

FeldTypErforderlichBeschreibung
agent_idstringJaAgent, der den Anruf tätigt.
from_numberstringJaAnrufer-ID im E.164-Format (z. B. +1234567890).
to_numberstringJaTelefonnummer des Empfängers.
custom_dataobjectNeinBeliebige, dem Anruf angehängte Daten.
dynamic_contextobjectNeinIn das Gespräch übergebener Kontext (z. B. Kundenname).

Beispielanfrage

curl -X POST "https://api.hanc.ai/v1/call/make-phone-call" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "507f1f77bcf86cd799439042",
"from_number": "+1234567890",
"to_number": "+19876543210",
"dynamic_context": { "customer_name": "Jane", "order_id": "12345" }
}'

Beispielantwort201 Created

{
"_id": "507f1f77bcf86cd799439011",
"call_type": "phone",
"agent_id": "507f1f77bcf86cd799439042",
"call_status": "started",
"call_from": "+1234567890",
"call_to": "+19876543210",
"direction": "outbound",
"start_timestamp": 1703302407333
}

Einen Web-Anruf tätigen

POST /v1/call/make-web-call

Erstellen Sie eine Browser-/WebRTC-Anrufsitzung für einen Ihrer Agenten.

Anfrage-Body

FeldTypErforderlichBeschreibung
agent_idstringJaAgent, der den Web-Anruf bearbeitet.
custom_dataobjectNeinBeliebige, dem Anruf angehängte Daten.
dynamic_contextobjectNeinIn das Gespräch übergebener Kontext.

Beispielanfrage

curl -X POST "https://api.hanc.ai/v1/call/make-web-call" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agent_id": "507f1f77bcf86cd799439042", "dynamic_context": { "topic": "billing" } }'

Beispielantwort201 Created

{
"_id": "507f1f77bcf86cd799439077",
"call_type": "web",
"agent_id": "507f1f77bcf86cd799439042",
"call_status": "started",
"start_timestamp": 1703302407333
}

Agenten

Erstellen und verwalten Sie Sprachagenten, ihre Actions (was sie während eines Anrufs tun — E-Mail/SMS/WhatsApp senden, Ihre API aufrufen) und ihre Tools (Fähigkeiten wie RAG-Suche, Terminbuchung, Anrufweiterleitung, Kalender-/CRM-Integrationen).

Agenten auflisten

GET /v1/agent/list

Gibt alle Agenten zurück, die zu Ihrem Konto gehören.

Query-Parameter

NameTypErforderlichBeschreibung
customer_idstringNeinAuf einen Kunden beschränken.
workspace_idstringNeinAuf einen Workspace beschränken.

Beispielanfrage

curl "https://api.hanc.ai/v1/agent/list" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

[
{
"_id": "60d21b4667d0d8992e610c85",
"agent_name": "Customer Support Agent",
"llm_id": "60d21b4667d0d8992e610c86",
"voice": { "voice_id": "60d21b4667d0d8992e610c87" },
"interruption_sensitivity": 1.0,
"call_settings": { "language": "en-US", "sentiment_analysis": false, "call_summary": false },
"status": "active",
"workspace_id": "60d21b4667d0d8992e610c87",
"knowledge_base": ["60d21b4667d0d8992e610c89"]
}
]

Einen Agenten abrufen

GET /v1/agent/:id

Gibt einen einzelnen Agenten zurück.

Pfadparameter

NameTypErforderlichBeschreibung
idstringJaAgenten-ID.

Beispielanfrage

curl "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85" \
-H "x-api-key: YOUR_API_KEY"

Gibt das Agentenobjekt zurück (dieselbe Form wie ein Element aus Agenten auflisten) oder 404, wenn nicht gefunden.

Einen Agenten erstellen

POST /v1/agent

Erstellt einen neuen Agenten. Nur agent_name und llm_id sind erforderlich — alles andere ist optional und greift auf sinnvolle Standardwerte zurück.

Query-Parameter — optional customer_id, workspace_id, um den neuen Agenten zuzuordnen.

Anfrage-Body

FeldTypErforderlichBeschreibung
agent_namestringJaAnzeigename.
llm_idstringJaID des LLM, das den Agenten antreibt.
voiceobjectNein{ "voice_id": "<id>" }.
interruption_sensitivitynumberNeinWie leicht der Agent bei Unterbrechung nachgibt (z. B. 0.5).
call_settingsobjectNeinSprache, Erinnerungen, Stille-Timeout, Sentiment-Analyse, Anrufzusammenfassung, max_call_duration_minutes (1–15).
data_retrievalobject[]NeinFelder, die der Agent während eines Anrufs erfasst.
webhook_urlstringNeinURL, die über Agentenereignisse benachrichtigt wird.
is_data_collection_activebooleanNeinDas Datenerhebungsformular aktivieren.

Beispielanfrage

curl -X POST "https://api.hanc.ai/v1/agent" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "Customer Support Agent",
"llm_id": "507f1f77bcf86cd799439033",
"voice": { "voice_id": "507f1f77bcf86cd799439035" },
"interruption_sensitivity": 0.5,
"call_settings": { "language": "en-US", "max_call_duration_minutes": 10 }
}'

Beispielantwort201 Created (das erstellte Agentenobjekt).

Einen Agenten aktualisieren

PATCH /v1/agent/:id

Aktualisiert einen Agenten teilweise. Alle Body-Felder sind optional — senden Sie nur, was Sie ändern möchten.

Pfadparameterid (Agenten-ID).

Anfrage-Body — eine beliebige Teilmenge der Erstellungsfelder, plus folder, status (z. B. active), is_customer_memory_active, widget_settings, callback_settings. Innerhalb von call_settings können Sie außerdem recording_enabled, stt_languages (bis zu 4 BCP-47-Codes) und max_call_duration_minutes setzen.

Beispielanfrage

curl -X PATCH "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agent_name": "Support Agent v2", "call_settings": { "language": "en-GB", "recording_enabled": false } }'

Beispielantwort200 OK (das aktualisierte Agentenobjekt).

Einen Agenten löschen

DELETE /v1/agent/:id

Löscht einen Agenten.

Beispielanfrage

curl -X DELETE "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort204 No Content (leerer Body).

Anrufstatistiken des Agenten

GET /v1/agent/:id/call-stats

Tägliche Anrufanzahl für einen Agenten über einen Zeitraum.

Pfadparameterid (Agenten-ID).

Query-Parameter

NameTypErforderlichBeschreibung
date_fromstringJaStartdatum (YYYY-MM-DD).
date_tostringJaEnddatum (YYYY-MM-DD).

Beispielanfrage

curl -G "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/call-stats" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "date_from=2026-05-01" \
--data-urlencode "date_to=2026-05-31"

Beispielantwort200 OK

[
{ "date": "2026-05-28", "total_calls": 10 },
{ "date": "2026-05-29", "total_calls": 4 }
]

Agenten-Vorlagen auflisten

GET /v1/agent/agent_template/list

Gibt den Katalog vorgefertigter Agenten-Vorlagen zurück, die Sie klonen können. Keine Parameter.

Beispielanfrage

curl "https://api.hanc.ai/v1/agent/agent_template/list" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

[
{
"_id": "60d21b4667d0d8992e610c85",
"icon_url": "https://example.com/icon.png",
"description": "A ready-made receptionist agent.",
"agent": { "agent_name": "Receptionist", "call_settings": { "language": "en-US" } },
"llm": { "model": "gpt-4o-mini", "begin_message": "Hello, how can I assist you today?" }
}
]

Agenten-Actions

Actions sind Dinge, die ein Agent während eines Anrufs ausführt. Unterstützte action_type-Werte: send_email, send_sms, send_whatsapp, api_call. Die Form des settings-Objekts hängt vom Typ ab.

Actions auflisten

GET /v1/agent/:id/actions

curl "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/actions" \
-H "x-api-key: YOUR_API_KEY"

Gibt ein Array von Action-Objekten zurück.

Eine Action hinzufügen

POST /v1/agent/:id/actions

Anfrage-Body

FeldTypErforderlichBeschreibung
action_typeenumJasend_email, send_sms, send_whatsapp oder api_call.
settingsobjectJaTypspezifische Konfiguration.
is_activebooleanNeinStandardmäßig true.

Beispielanfrage

curl -X POST "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/actions" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action_type": "send_email",
"settings": {
"name": "Welcome Email",
"subject": "Welcome!",
"message": "Thank you for joining us.",
"direct_recipients": ["user@example.com"]
}
}'

Beispielantwort201 Created

{
"_id": "60f5b1a8d1b9f7c1d0c0a6c6",
"agent_id": "60d21b4667d0d8992e610c85",
"action_type": "send_email",
"settings": { "name": "Welcome Email", "subject": "Welcome!", "message": "Thank you for joining us.", "direct_recipients": ["user@example.com"] },
"is_active": true
}

Eine Action aktualisieren

PATCH /v1/agent/:id/actions/:agentActionId

Aktualisiert die settings und/oder is_active einer angehängten Action. Beide Body-Felder sind optional.

curl -X PATCH "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/actions/60f5b1a8d1b9f7c1d0c0a6c6" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "is_active": false }'

Gibt 200 OK mit dem aktualisierten Action-Objekt zurück.

Eine Action löschen

DELETE /v1/agent/:id/actions/:agentActionId

curl -X DELETE "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/actions/60f5b1a8d1b9f7c1d0c0a6c6" \
-H "x-api-key: YOUR_API_KEY"

Gibt 204 No Content zurück.

Agenten-Tools

Tools verleihen einem Agenten zusätzliche Fähigkeiten. Unterstützte tool_type-Werte: api_rag, appointment_booking, call_forwarding, end_call, google_calendar, outlook_calendar, etermin, resmio, hubspot_crm, agent_transfer, mcp. Die Form des settings-Objekts hängt vom Typ ab.

etermin und resmio sind Live-Tools zur Termin-/Reservierungsbuchung: Der Agent prüft die Verfügbarkeit und bucht, verschiebt oder storniert direkt im verbundenen eTermin- oder resmio-Konto. Beide erfordern, dass die entsprechende Integration zuvor im Konto verbunden ist.

Tools auflisten

GET /v1/agent/:id/tools

curl "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/tools" \
-H "x-api-key: YOUR_API_KEY"

Gibt ein Array von Tool-Objekten zurück.

Ein Tool hinzufügen

POST /v1/agent/:id/tools

Anfrage-Body

FeldTypErforderlichBeschreibung
tool_typeenumJaEiner der oben unterstützten Tool-Typen.
settingsobjectJaTypspezifische Konfiguration.
is_activebooleanNeinStandardmäßig true.

Beispielanfrage

curl -X POST "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/tools" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tool_type": "call_forwarding",
"settings": { "name": "Transfer to human", "phone_number": "+1234567890" }
}'

Beispielantwort201 Created

{
"_id": "60f5b1a8d1b9f7c1d0c0a6c6",
"agent_id": "60d21b4667d0d8992e610c85",
"tool_type": "call_forwarding",
"settings": { "name": "Transfer to human", "phone_number": "+1234567890" },
"is_active": true
}

Ein Tool aktualisieren

PATCH /v1/agent/:id/tools/:agentToolId

Aktualisiert die settings und/oder is_active eines angehängten Tools (beide optional).

curl -X PATCH "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/tools/60f5b1a8d1b9f7c1d0c0a6c6" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "is_active": false }'

Gibt 200 OK mit dem aktualisierten Tool-Objekt zurück.

Ein Tool löschen

DELETE /v1/agent/:id/tools/:agentToolId

curl -X DELETE "https://api.hanc.ai/v1/agent/60d21b4667d0d8992e610c85/tools/60f5b1a8d1b9f7c1d0c0a6c6" \
-H "x-api-key: YOUR_API_KEY"

Gibt 204 No Content zurück.


Knowledge Base

Laden Sie Dokumente hoch, die Ihre Agenten während eines Anrufs durchsuchen können, und steuern Sie, welche Agenten welche Knowledge Base nutzen. Datei-Uploads verwenden multipart/form-data.

Knowledge Bases auflisten

GET /v1/knowledge-base/list

Query-Parameter — optional customer_id, workspace_id.

curl "https://api.hanc.ai/v1/knowledge-base/list" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

[
{
"_id": "60d21b4667d0d8992e610c85",
"knowledge_base_name": "Company Policies",
"knowledge_base_description": "Refund, shipping and warranty policies.",
"files": [
{ "_id": "60d21b4667d0d8992e610c90", "file_name": "policies.pdf", "file_size": 2048000, "uploaded_at": "2026-05-24T07:34:23.980Z" }
],
"agent_names": ["Sales Agent", "Support Bot"]
}
]

Eine Knowledge Base erstellen

POST /v1/knowledge-base

Erstellen Sie eine Knowledge Base zusammen mit ihrer ersten Datei. Dies ist eine multipart/form-data-Anfrage — es gibt kein reines Body-„Erstellen“.

Query-Parameter — optional customer_id, workspace_id.

Formularfelder

FeldTypErforderlichBeschreibung
filefileJaDas erste Dokument (z. B. eine PDF).
namestringJaName der Knowledge Base (1–100 Zeichen).
descriptionstringJaBeschreibung (1–300 Zeichen).
folderstringNeinOrdner-/Kategoriebezeichnung (0–50 Zeichen).

Beispielanfrage

curl -X POST "https://api.hanc.ai/v1/knowledge-base" \
-H "x-api-key: YOUR_API_KEY" \
-F "file=@./policies.pdf" \
-F "name=Company Policies" \
-F "description=Refund, shipping and warranty policies." \
-F "folder=Sales"

Beispielantwort200 OK (die erstellte Knowledge Base, dieselbe Form wie ein Listenelement).

Eine einzelne Datei hinzufügen

POST /v1/knowledge-base/:id/file

Fügt einer bestehenden Knowledge Base eine Datei hinzu. Multipart-Feldname: file.

curl -X POST "https://api.hanc.ai/v1/knowledge-base/60d21b4667d0d8992e610c85/file" \
-H "x-api-key: YOUR_API_KEY" \
-F "file=@./addendum.pdf"

Gibt 200 OK mit der aktualisierten Knowledge Base zurück.

Mehrere Dateien hinzufügen

POST /v1/knowledge-base/:id/files

Fügt mehrere Dateien auf einmal hinzu. Multipart-Feldname: files (für jede Datei wiederholen). Optionale customer_id-, workspace_id-Query-Parameter.

curl -X POST "https://api.hanc.ai/v1/knowledge-base/60d21b4667d0d8992e610c85/files" \
-H "x-api-key: YOUR_API_KEY" \
-F "files=@./doc1.pdf" \
-F "files=@./doc2.pdf"

Gibt 200 OK mit der aktualisierten Knowledge Base zurück.

Datei(en) löschen

DELETE /v1/knowledge-base/:id/file

Entfernt eine oder mehrere Dateien anhand der ID. Trotz des Pfads im Singular nimmt der Body ein Array entgegen.

Anfrage-Body

FeldTypErforderlichBeschreibung
file_idsstring[]JaNicht-leeres Array von zu löschenden Datei-IDs.
curl -X DELETE "https://api.hanc.ai/v1/knowledge-base/60d21b4667d0d8992e610c85/file" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "file_ids": ["60c72b2f9b1e8b001c8e4d3a", "60c72b2f9b1e8b001c8e4d3b"] }'

Gibt 200 OK zurück.

Agenten zuweisen

PUT /v1/knowledge-base/:id/agents

Legt die vollständige Liste der Agenten fest (ersetzt sie), die diese Knowledge Base nutzen.

Anfrage-Body

FeldTypErforderlichBeschreibung
agent_idsstring[]JaAgenten-IDs, die diese Knowledge Base nutzen sollen.
curl -X PUT "https://api.hanc.ai/v1/knowledge-base/60d21b4667d0d8992e610c85/agents" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "agent_ids": ["60d21b4667d0d8992e610c85"] }'

Gibt 200 OK zurück.


Telefonnummern

Listen Sie Ihre Nummern auf, finden Sie kaufbare Nummern, kaufen Sie eine, importieren Sie Nummern aus einem verbundenen Twilio-Konto oder verbinden Sie eine Nummer mit einem SIP-Trunk.

Nummern im Dashboard kaufen

Der Nummernkauf im Dashboard geht über das hinaus, was diese Endpunkte bereitstellen. Sofortige Nummern ohne Papierkram sind in Österreich, Deutschland, der Schweiz, den USA und Kanada verfügbar; jedes andere Land verwendet einen geführten Self-Service-Ablauf, bei dem Sie Ihre eigenen regulatorischen Dokumente einreichen (und sie als Entwurf speichern können, um später fortzufahren). Der Kaufbildschirm bietet die Typen lokal, mobil, national und gebührenfrei — plus erweiterte Nummern (+€2/Monat) und WhatsApp-Anrufnummern. BYO SIP ist anbieterneutral (sipgate, Placetel, TENIOS, easybell, Zadarma, Telnyx, eigene Trunks — nicht nur Twilio-Import). Siehe Telefonnummern für den vollständigen Ablauf.

Telefonnummern auflisten

GET /v1/phone-number/list

Query-Parameter — alle optional: inbound_agent_id, outbound_agent_id, customer_id, workspace_id (und user_id, standardmäßig Sie).

curl "https://api.hanc.ai/v1/phone-number/list" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

[
{
"_id": "60d21b4667d0d8992e610c85",
"phone_number": "+1234567890",
"formatted_number": "+1 (234) 567-8900",
"country": "US",
"provider": "twilio",
"status": "active",
"inbound_agent_id": "64bfb7b3f3d9ab3f1e2c109c",
"inbound_agent_name": "Receptionist"
}
]

Verfügbare Nummern

GET /v1/phone-number/available

Listet für ein Land kaufbare Nummern auf.

Query-Parameter

NameTypErforderlichBeschreibung
country_codestringNeinISO-Ländercode (Standard US), z. B. DE, AT, CH.
area_codestringNeinNumerischer Vorwahl-Filter.
curl -G "https://api.hanc.ai/v1/phone-number/available" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "country_code=US" \
--data-urlencode "area_code=415"

Beispielantwort200 OK

[
{ "phone_number": "+14155550100", "formatted_number": "+1 (415) 555-0100", "country": "US", "area_code": "415", "setup_fee": 2, "subscription": 2, "currency": "EUR" }
]

Eine Nummer kaufen

POST /v1/phone-number/buy

Kaufen Sie eine bestimmte Nummer. Optionale customer_id-, workspace_id-Query-Parameter.

Anfrage-Body

FeldTypErforderlichBeschreibung
phone_numberstringJaDie zu kaufende Nummer (E.164).
country_codestringJaLand der Nummer (z. B. US).
curl -X POST "https://api.hanc.ai/v1/phone-number/buy" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone_number": "+14155550100", "country_code": "US" }'

Beispielantwort200 OK

{
"message": "Phone number purchased successfully!",
"phone_number": { "_id": "507f1f77bcf86cd799439011", "phone_number": "+14155550100", "country": "US", "provider": "twilio", "status": "active" }
}

Aus Twilio importieren

POST /v1/phone-number/import-twilio

Importieren Sie Nummern aus einem verbundenen Twilio-Konto. Optionale customer_id-, workspace_id-Query-Parameter.

Anfrage-Body

FeldTypErforderlichBeschreibung
sidstringJaTwilio Account SID (AC…).
curl -X POST "https://api.hanc.ai/v1/phone-number/import-twilio" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }'

Beispielantwort200 OK (der importierte Telefonnummerdatensatz).

Mit SIP verbinden

PATCH /v1/phone-number/connect-to-sip

Verbinden Sie eine bestehende Nummer mit einem SIP-Trunk.

Anfrage-Body

FeldTypErforderlichBeschreibung
phone_numberstringJaDie zu verbindende Nummer (E.164).
curl -X PATCH "https://api.hanc.ai/v1/phone-number/connect-to-sip" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone_number": "+1234567890" }'

Gibt 200 OK zurück (leerer Body).


Stimmen

Stimmen auflisten

GET /v1/voice/list

Listet verfügbare Stimmen auf. Filtern Sie nach Sprache oder Anbieter und beziehen Sie die privaten Klone eines Kunden ein.

Query-Parameter

NameTypErforderlichBeschreibung
languagestringNeinNach Sprache filtern, z. B. ?language=de.
providerstringNein11-Labs, openai, qwen oder azure.
customer_idstringNeinAuch die privaten Stimmklone dieses Kunden einbeziehen.
curl -G "https://api.hanc.ai/v1/voice/list" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "language=de"

Beispielantwort200 OK

[
{
"_id": "60d21b4667d0d8992e610c85",
"voice_id": "voice_12345",
"name": "Emma",
"gender": "female",
"accent": "British",
"languages": ["english", "spanish"],
"provider": "11-Labs",
"sample_url": "https://example.com/sample.mp3"
}
]

Abonnement

Abonnementdetails

GET /v1/subscription

Gibt Ihr aktuelles Abonnement zurück, einschließlich Guthabenständen und Aufladeeinstellungen.

curl "https://api.hanc.ai/v1/subscription" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

{
"_id": "507f191e810c19729de860ea",
"payment_plan_id": "507f191e810c19729de860ec",
"currency": "EUR",
"package_credits": 1000,
"package_credits_used": 100,
"auto_top_up_enabled": false,
"top_up_amount": 50,
"extra_credits_payed": 1000,
"extra_credits_used": 100,
"billing_cycle": "monthly",
"next_credit_reset": "2026-06-15T03:00:00.000Z",
"is_cancelled": false
}

Gibt 404 zurück, wenn kein Abonnementdatensatz existiert.

Automatische Aufladung konfigurieren

PATCH /v1/subscription/auto-top-up

Aktiviert oder deaktiviert die automatische Guthabenaufladung.

Anfrage-Body

FeldTypErforderlichBeschreibung
enabledbooleanJaAutomatische Aufladung ein- oder ausschalten.
amountnumberNeinAufladebetrag (20–1000). Beim Aktivieren festlegen.
curl -X PATCH "https://api.hanc.ai/v1/subscription/auto-top-up" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "enabled": true, "amount": 50 }'

Gibt 200 OK mit dem aktualisierten Abonnement zurück.

Aufladebetrag festlegen

PATCH /v1/subscription/top-up-amount

Aktualisiert den konfigurierten Aufladebetrag.

Anfrage-Body

FeldTypErforderlichBeschreibung
top_up_amountnumberJaNeuer Betrag (1–100).
curl -X PATCH "https://api.hanc.ai/v1/subscription/top-up-amount" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "top_up_amount": 10 }'

Gibt 200 OK mit dem aktualisierten Abonnement zurück.


Kunden

Verwalten Sie die Kunden Ihrer Agentur. Diese Endpunkte erfordern, dass Ihr Konto zu einer Agentur gehört.

Kunden auflisten

GET /v1/customer/list

curl "https://api.hanc.ai/v1/customer/list" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

[
{
"_id": "60d21b4667d0d8992e610c85",
"email": "customer@example.com",
"name": "John Doe",
"account_status": "active",
"agents_count": 3
}
]

Kundendetails

GET /v1/customer/:id

curl "https://api.hanc.ai/v1/customer/60d21b4667d0d8992e610c85" \
-H "x-api-key: YOUR_API_KEY"

Gibt das Kundenobjekt zurück oder 404, wenn nicht gefunden.

Einen Kunden erstellen

POST /v1/customer

Anfrage-Body

FeldTypErforderlichBeschreibung
emailstringJaLogin-E-Mail des Kunden.
initial_passwordstringJaAnfangspasswort (8–128 Zeichen).
namestringJaKonto-/Firmenname.
user_full_namestringJaVollständiger Name des Kundennutzers.
visibilityobjectNeinSichtbarkeits-Flags pro Bereich.
opt_out_promotionsbooleanNeinDen Kunden von Werbenachrichten ausschließen.
curl -X POST "https://api.hanc.ai/v1/customer" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "customer@example.com",
"initial_password": "Password123!",
"name": "Acme Co.",
"user_full_name": "John Doe"
}'

Gibt 201 Created mit dem neuen Kunden zurück. Gibt 400 zurück, wenn die E-Mail bereits existiert oder Ihr Konto nicht Teil einer Agentur ist.

Einen Kunden aktualisieren

PATCH /v1/customer/:id

Anfrage-Body — alle optional: name, email, phone, address.

curl -X PATCH "https://api.hanc.ai/v1/customer/60d21b4667d0d8992e610c85" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Acme Corporation", "phone": "+1234567890" }'

Gibt 200 OK mit dem aktualisierten Kunden zurück.

Einen Kunden löschen

DELETE /v1/customer/:id

curl -X DELETE "https://api.hanc.ai/v1/customer/60d21b4667d0d8992e610c85" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort

{ "message": "Customer deleted successfully" }

Workspaces

Fassen Sie Agenten, Nummern und Knowledge Bases in Workspaces zusammen und verwalten Sie deren Mitglieder.

Workspaces auflisten

GET /v1/workspaces/list

Optionaler customer_id-Query-Parameter.

curl "https://api.hanc.ai/v1/workspaces/list" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort200 OK

[
{
"_id": "64b1f2d2f3d92c5b8c5e1e22",
"name": "Workspace A",
"description": "For the A team.",
"owner_user_id": "64b1f2d2f3d92c5b8c5e1e10",
"members": [
{ "user_id": "64b1f2d2f3d92c5b8c5e1e11", "full_name": "John Doe", "email": "john.doe@example.com" }
]
}
]

Einen Workspace erstellen

POST /v1/workspaces

Anfrage-Body

FeldTypErforderlichBeschreibung
namestringJaWorkspace-Name (2–100 Zeichen).
descriptionstringNeinBeschreibung (0–500 Zeichen).
curl -X POST "https://api.hanc.ai/v1/workspaces" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Development Team", "description": "For the dev team." }'

Gibt 201 Created mit dem Workspace zurück.

Workspace-Details

GET /v1/workspaces/:id

curl "https://api.hanc.ai/v1/workspaces/64b1f2d2f3d92c5b8c5e1e22" \
-H "x-api-key: YOUR_API_KEY"

Gibt das Workspace-Objekt zurück.

Einen Workspace aktualisieren

PATCH /v1/workspaces/:id

Anfrage-Bodyname (2–100) und/oder description (0–500).

curl -X PATCH "https://api.hanc.ai/v1/workspaces/64b1f2d2f3d92c5b8c5e1e22" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Renamed Workspace" }'

Gibt 200 OK mit dem aktualisierten Workspace zurück.

Einen Workspace löschen

DELETE /v1/workspaces/:id

curl -X DELETE "https://api.hanc.ai/v1/workspaces/64b1f2d2f3d92c5b8c5e1e22" \
-H "x-api-key: YOUR_API_KEY"

Beispielantwort

{ "message": "Workspace deleted successfully" }

Ein Mitglied einladen

POST /v1/workspaces/:workspace_id/invite-member

Anfrage-Body

FeldTypErforderlichBeschreibung
emailstringJaE-Mail des einzuladenden Nutzers.
curl -X POST "https://api.hanc.ai/v1/workspaces/64b1f2d2f3d92c5b8c5e1e22/invite-member" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "email": "teammate@example.com" }'

Gibt 201 Created mit dem Workspace zurück (das neue Mitglied erscheint in members).

Ein Mitglied entfernen

DELETE /v1/workspaces/:workspace_id/remove-member

Anfrage-Body

FeldTypErforderlichBeschreibung
emailstringJaE-Mail des zu entfernenden Mitglieds.
curl -X DELETE "https://api.hanc.ai/v1/workspaces/64b1f2d2f3d92c5b8c5e1e22/remove-member" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "email": "teammate@example.com" }'

Gibt 200 OK mit dem aktualisierten Workspace zurück.


Was über die API nicht verfügbar ist

Einige Operationen sind nur über das Dashboard verfügbar:

FunktionGrund
API-Key-VerwaltungSicherheit — Keys können keine anderen Keys erstellen
Einrichtung von TelefonnummernErfordert interaktive Einrichtung
Google-KalenderintegrationErfordert interaktive Autorisierung
Abrechnung & ZahlungenÜber das Dashboard verwaltet

Brauchen Sie Hilfe?

Kontaktieren Sie unser Support-Team unter support@hanc.ai für API-bezogene Fragen.