Przejdź do głównej zawartości

Dokumentacja API

Pełna dokumentacja API do integracji Hanc.AI z Twoimi aplikacjami. Zarządzaj agentami, pobieraj dane o połączeniach, wykonuj połączenia i obsługuj każdą część platformy programowo.

Każda sekcja poniżej podaje metodę i ścieżkę HTTP, parametry (ścieżki, zapytania i treści), gotowe do uruchomienia przykładowe żądanie oraz reprezentatywną przykładową odpowiedź, dzięki czemu możesz integrować się bez zgadywania kształtu ładunku.


Szybki przegląd

Bazowy URLhttps://api.hanc.ai
Prefiks wersjiWszystkie ścieżki są poprzedzone /v1
UwierzytelnianieKlucz API przez nagłówek x-api-key
FormatJSON (żądanie i odpowiedź)

Wygeneruj klucz API w Integracja → Klucze API w panelu. Możesz mieć maksymalnie 3 klucze na użytkownika — zobacz sekcję Klucze API w Integracjach, aby poznać konfigurację, uprawnienia i wskazówki dotyczące bezpieczeństwa.

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

Uwierzytelnianie

Wyślij swój klucz w nagłówku x-api-key przy każdym żądaniu:

x-api-key: YOUR_API_KEY

Klucz rozwiązywany jest do użytkownika, który jest jego właścicielem, a każde żądanie jest automatycznie ograniczone do zakresu tego użytkownika — nigdy nie przekazujesz ID użytkownika. Brakujący lub nieprawidłowy klucz jest odrzucany z 401 Unauthorized / 403 Forbidden.

wskazówka

Trzymaj klucze po stronie serwera. Nigdy nie osadzaj klucza API w przeglądarce, aplikacji mobilnej ani żadnym kliencie, który użytkownik końcowy może sprawdzić. Jeśli klucz wycieknie, unieważnij go w Integracja → Klucze API i wydaj nowy.


Konwencje

Kilka reguł obowiązuje w całym API. Jednorazowe przeczytanie ich oszczędzi Ci czasu na debugowanie:

  • Prefiks wersji — każda ścieżka zaczyna się od /v1 (np. https://api.hanc.ai/v1/agent/list).
  • ID to Mongo ObjectId — każde :id (oraz :agentActionId, :agentToolId itd.) musi być 24-znakowym ciągiem szesnastkowym. Nieprawidłowe ID zwracają 400 Bad Request.
  • Nieznane pola treści są usuwane — API waliduje treści żądań i po cichu odrzuca właściwości, których nie rozpoznaje, więc literówka w nazwie pola jest ignorowana, a nie zapisywana.
  • Daty — punkty końcowe analityki/eksportu przyjmują date_from / date_to jako YYYY-MM-DD. date_to jest włącznie do końca danego dnia.
  • Parametry zapytania będące tablicą — tam, gdzie filtr przyjmuje wiele wartości (np. agent_ids, direction), możesz powtórzyć klucz (?direction=inbound&direction=outbound) lub oddzielić wartości przecinkami (?direction=inbound,outbound).
  • Znaczniki czasu w odpowiedziach są w milisekundach epoki, chyba że pokazano je jako ciąg ISO-8601.

Indeks punktów końcowych

Szybka mapa wszystkiego, co dostępne. Szczegółowa dokumentacja każdego z nich znajduje się poniżej.

Połączenia

DziałanieMetodaPunkt końcowy
Lista połączeńGET/v1/call/list
Szczegóły połączenia (transkrypcja, sentyment, podsumowanie)GET/v1/call/:id
Analityka ogólna (sumy w zakresie)GET/v1/call/general-metrics
Analityka dziennaGET/v1/call/daily-metrics
Statystyki sentymentuGET/v1/call/sentiment-stats
Rozbicie kosztówGET/v1/call/costs-breakdown
Eksport połączeń (CSV)GET/v1/call/list/export
Eksport kosztów (CSV)GET/v1/call/costs-breakdown/export
Wykonaj połączenie telefonicznePOST/v1/call/make-phone-call
Wykonaj połączenie webowePOST/v1/call/make-web-call

Agenci

DziałanieMetodaPunkt końcowy
Lista agentówGET/v1/agent/list
Szczegóły agentaGET/v1/agent/:id
Utwórz agentaPOST/v1/agent
Zaktualizuj agentaPATCH/v1/agent/:id
Usuń agentaDELETE/v1/agent/:id
Statystyki połączeń agentaGET/v1/agent/:id/call-stats
Lista szablonów agentówGET/v1/agent/agent_template/list
Lista akcjiGET/v1/agent/:id/actions
Dodaj akcjęPOST/v1/agent/:id/actions
Zaktualizuj akcjęPATCH/v1/agent/:id/actions/:agentActionId
Usuń akcjęDELETE/v1/agent/:id/actions/:agentActionId
Lista narzędziGET/v1/agent/:id/tools
Dodaj narzędziePOST/v1/agent/:id/tools
Zaktualizuj narzędziePATCH/v1/agent/:id/tools/:agentToolId
Usuń narzędzieDELETE/v1/agent/:id/tools/:agentToolId

Baza wiedzy

DziałanieMetodaPunkt końcowy
Lista baz wiedzyGET/v1/knowledge-base/list
Utwórz (z pierwszym plikiem)POST/v1/knowledge-base
Dodaj pojedynczy plikPOST/v1/knowledge-base/:id/file
Dodaj wiele plikówPOST/v1/knowledge-base/:id/files
Usuń plik(i)DELETE/v1/knowledge-base/:id/file
Przypisz agentówPUT/v1/knowledge-base/:id/agents

Numery telefonów

DziałanieMetodaPunkt końcowy
Lista numerówGET/v1/phone-number/list
Dostępne numery (według kraju)GET/v1/phone-number/available
Kup numerPOST/v1/phone-number/buy
Importuj z TwilioPOST/v1/phone-number/import-twilio
Podłącz do SIPPATCH/v1/phone-number/connect-to-sip

Głosy · Subskrypcja · Klienci · Przestrzenie robocze

DziałanieMetodaPunkt końcowy
Lista głosówGET/v1/voice/list
Szczegóły subskrypcjiGET/v1/subscription
Konfiguruj automatyczne doładowaniePATCH/v1/subscription/auto-top-up
Ustaw kwotę doładowaniaPATCH/v1/subscription/top-up-amount
Lista klientówGET/v1/customer/list
Szczegóły klientaGET/v1/customer/:id
Utwórz klientaPOST/v1/customer
Zaktualizuj klientaPATCH/v1/customer/:id
Usuń klientaDELETE/v1/customer/:id
Lista przestrzeni roboczychGET/v1/workspaces/list
Utwórz przestrzeń robocząPOST/v1/workspaces
Szczegóły przestrzeni roboczejGET/v1/workspaces/:id
Zaktualizuj przestrzeń robocząPATCH/v1/workspaces/:id
Usuń przestrzeń robocząDELETE/v1/workspaces/:id
Zaproś członkaPOST/v1/workspaces/:workspace_id/invite-member
Usuń członkaDELETE/v1/workspaces/:workspace_id/remove-member

Połączenia

Zarządzaj i analizuj połączenia głosowe: wyświetlaj i przeglądaj połączenia (transkrypcja, sentyment, podsumowanie), pobieraj zagregowane metryki, eksportuj raporty CSV oraz wykonuj wychodzące połączenia telefoniczne i webowe.

Lista połączeń

GET /v1/call/list

Wyświetl połączenia dla swojego konta z filtrowaniem, sortowaniem i paginacją.

Parametry zapytania

NazwaTypWymaganeOpis
agent_idsstring[]NieFiltruj według jednego lub więcej ID agentów (powtórz lub oddziel przecinkami).
agent_idstringNieFiltruj według pojedynczego agenta (przestarzałe; preferuj agent_ids).
directionenum[]Nieinbound i/lub outbound.
call_statusenum[]Niestarted, success, failed, pending.
call_typeenum[]Niephone, web.
customer_idstringNieFiltruj według klienta.
workspace_idstringNieFiltruj według przestrzeni roboczej.
date_from / date_tostringNieFiltr zakresu (YYYY-MM-DD).
sort_orderenumNieasc lub desc.
limitnumberNieMaks. liczba zwracanych wyników.
skipnumberNieLiczba wyników do pominięcia (offset paginacji).

Przykładowe żądanie

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"

Przykładowa odpowiedź200 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
}
]

Pobierz szczegóły połączenia

GET /v1/call/:id

Pobierz pełne szczegóły jednego połączenia — transkrypcję, sentyment, podsumowanie, kredyty i metryki wydajności.

Parametry ścieżki

NazwaTypWymaganeOpis
idstringTakID połączenia.

Przykładowe żądanie

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

Przykładowa odpowiedź200 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
}
}

Zwraca 404, jeśli połączenie nie istnieje lub nie należy do Twojego konta.

Metryki ogólne

GET /v1/call/general-metrics

Zagregowane sumy (liczba połączeń, łączny i średni czas trwania) w zakresie dat.

Parametry zapytania

NazwaTypWymaganeOpis
date_fromstringTakData początkowa (YYYY-MM-DD).
date_tostringTakData końcowa (YYYY-MM-DD, włącznie).
agent_id / agent_idsstring(s)NieOgranicz do jednego lub więcej agentów.
customer_idstringNieFiltruj według klienta.
workspace_idstringNieFiltruj według przestrzeni roboczej.
direction / call_status / call_typeenum[]NieTe same filtry co w Lista połączeń.

Pominięcie date_from lub date_to zwraca 400 Bad Request.

Przykładowe żądanie

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"

Przykładowa odpowiedź200 OK

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

Metryki dzienne

GET /v1/call/daily-metrics

Łączny dzienny czas trwania połączeń w zakresie dat — idealny do wykresów trendów.

Parametry zapytania — takie same jak Metryki ogólne (date_from/date_to wymagane, plus opcjonalne filtry agenta/klienta/przestrzeni roboczej/kierunku/statusu/typu).

Przykładowe żądanie

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"

Przykładowa odpowiedź200 OK

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

Statystyki sentymentu

GET /v1/call/sentiment-stats

Liczby połączeń według sentymentu dla jednego agenta w zakresie dat.

Parametry zapytania

NazwaTypWymaganeOpis
agent_idstringTakAgent, którego dotyczy raport.
date_fromstringTakData początkowa.
date_tostringTakData końcowa (włącznie).

Przykładowe żądanie

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"

Przykładowa odpowiedź200 OK

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

Rozbicie kosztów

GET /v1/call/costs-breakdown

Rozbicie kosztów/wykorzystania (połączenia, minuty, kredyty, tokeny, szczegóły na model) pogrupowane według użytkownika, agenta lub przestrzeni roboczej.

Parametry zapytania

NazwaTypWymaganeOpis
date_fromstringTakData początkowa.
date_tostringTakData końcowa (włącznie).
group_byenumNieuser (domyślnie), agent lub workspace.
customer_idstringNieFiltruj według klienta (dostęp agencyjny).
workspace_idstringNieFiltruj według przestrzeni roboczej.

Przykładowe żądanie

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"

Przykładowa odpowiedź200 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 }
}

Eksport połączeń (CSV)

GET /v1/call/list/export

Pobierz każde połączenie w zakresie dat jako plik CSV (ze szczegółami tokenów na połączenie i na model).

Parametry zapytania

NazwaTypWymaganeOpis
date_fromstringTakData początkowa.
date_tostringTakData końcowa (włącznie).

Odpowiedź — plik CSV (Content-Type: text/csv), serwowany jako załącznik o nazwie call-details_<date_from>_<date_to>.csv.

Przykładowe żądanie

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

Eksport kosztów (CSV)

GET /v1/call/costs-breakdown/export

Pobierz rozbicie kosztów jako plik CSV.

Parametry zapytania — takie same jak Rozbicie kosztów (date_from/date_to wymagane; opcjonalne group_by, customer_id, workspace_id).

Odpowiedź — plik CSV serwowany jako costs-breakdown_<date_from>_<date_to>.csv.

Przykładowe żądanie

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

Wykonaj połączenie telefoniczne

POST /v1/call/make-phone-call

Wykonaj wychodzące połączenie telefoniczne z jednego ze swoich agentów.

Treść żądania

PoleTypWymaganeOpis
agent_idstringTakAgent, który wykona połączenie.
from_numberstringTakCaller ID w formacie E.164 (np. +1234567890).
to_numberstringTakNumer telefonu odbiorcy.
custom_dataobjectNieDowolne dane dołączone do połączenia.
dynamic_contextobjectNieKontekst przekazywany do rozmowy (np. imię klienta).

Przykładowe żądanie

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" }
}'

Przykładowa odpowiedź201 Created

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

Wykonaj połączenie webowe

POST /v1/call/make-web-call

Utwórz sesję połączenia przeglądarkowego/WebRTC dla jednego ze swoich agentów.

Treść żądania

PoleTypWymaganeOpis
agent_idstringTakAgent, który obsłuży połączenie webowe.
custom_dataobjectNieDowolne dane dołączone do połączenia.
dynamic_contextobjectNieKontekst przekazywany do rozmowy.

Przykładowe żądanie

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" } }'

Przykładowa odpowiedź201 Created

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

Agenci

Twórz agentów głosowych i zarządzaj nimi, ich akcjami (co robią podczas połączenia — wysyłają e-mail/SMS/WhatsApp, wywołują Twoje API) oraz ich narzędziami (możliwości takie jak wyszukiwanie RAG, rezerwacja wizyt, przekierowanie połączeń, integracje z kalendarzem/CRM).

Lista agentów

GET /v1/agent/list

Zwraca wszystkich agentów należących do Twojego konta.

Parametry zapytania

NazwaTypWymaganeOpis
customer_idstringNieOgranicz do klienta.
workspace_idstringNieOgranicz do przestrzeni roboczej.

Przykładowe żądanie

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

Przykładowa odpowiedź200 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"]
}
]

Pobierz agenta

GET /v1/agent/:id

Zwraca pojedynczego agenta.

Parametry ścieżki

NazwaTypWymaganeOpis
idstringTakID agenta.

Przykładowe żądanie

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

Zwraca obiekt agenta (o tym samym kształcie co jeden element z Lista agentów) lub 404, jeśli nie znaleziono.

Utwórz agenta

POST /v1/agent

Utwórz nowego agenta. Wymagane są tylko agent_name i llm_id — wszystko inne jest opcjonalne i przyjmuje rozsądne wartości domyślne.

Parametry zapytania — opcjonalne customer_id, workspace_id, aby powiązać nowego agenta.

Treść żądania

PoleTypWymaganeOpis
agent_namestringTakNazwa wyświetlana.
llm_idstringTakID modelu LLM stojącego za agentem.
voiceobjectNie{ "voice_id": "<id>" }.
interruption_sensitivitynumberNieJak łatwo agent ustępuje, gdy się mu przerwie (np. 0.5).
call_settingsobjectNieJęzyk, przypomnienia, limit czasu ciszy, analiza sentymentu, podsumowanie połączenia, max_call_duration_minutes (1–15).
data_retrievalobject[]NiePola, które agent zbiera podczas połączenia.
webhook_urlstringNieURL powiadamiany o zdarzeniach agenta.
is_data_collection_activebooleanNieWłącz formularz zbierania danych.

Przykładowe żądanie

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 }
}'

Przykładowa odpowiedź201 Created (utworzony obiekt agenta).

Zaktualizuj agenta

PATCH /v1/agent/:id

Częściowo zaktualizuj agenta. Wszystkie pola treści są opcjonalne — wyślij tylko to, co chcesz zmienić.

Parametry ścieżkiid (ID agenta).

Treść żądania — dowolny podzbiór pól tworzenia, plus folder, status (np. active), is_customer_memory_active, widget_settings, callback_settings. Wewnątrz call_settings możesz też ustawić recording_enabled, stt_languages (do 4 kodów BCP-47) oraz max_call_duration_minutes.

Przykładowe żądanie

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 } }'

Przykładowa odpowiedź200 OK (zaktualizowany obiekt agenta).

Usuń agenta

DELETE /v1/agent/:id

Usuń agenta.

Przykładowe żądanie

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

Przykładowa odpowiedź204 No Content (pusta treść).

Statystyki połączeń agenta

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

Dzienne liczby połączeń dla jednego agenta w zakresie dat.

Parametry ścieżkiid (ID agenta).

Parametry zapytania

NazwaTypWymaganeOpis
date_fromstringTakData początkowa (YYYY-MM-DD).
date_tostringTakData końcowa (YYYY-MM-DD).

Przykładowe żądanie

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"

Przykładowa odpowiedź200 OK

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

Lista szablonów agentów

GET /v1/agent/agent_template/list

Zwraca katalog gotowych szablonów agentów, które możesz sklonować. Bez parametrów.

Przykładowe żądanie

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

Przykładowa odpowiedź200 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?" }
}
]

Akcje agenta

Akcje to rzeczy, które agent wykonuje podczas połączenia. Obsługiwane wartości action_type: send_email, send_sms, send_whatsapp, api_call. Kształt obiektu settings zależy od typu.

Lista akcji

GET /v1/agent/:id/actions

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

Zwraca tablicę obiektów akcji.

Dodaj akcję

POST /v1/agent/:id/actions

Treść żądania

PoleTypWymaganeOpis
action_typeenumTaksend_email, send_sms, send_whatsapp lub api_call.
settingsobjectTakKonfiguracja specyficzna dla typu.
is_activebooleanNieDomyślnie true.

Przykładowe żądanie

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"]
}
}'

Przykładowa odpowiedź201 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
}

Zaktualizuj akcję

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

Zaktualizuj settings i/lub is_active dołączonej akcji. Oba pola treści są opcjonalne.

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 }'

Zwraca 200 OK ze zaktualizowanym obiektem akcji.

Usuń akcję

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"

Zwraca 204 No Content.

Narzędzia agenta

Narzędzia dają agentowi dodatkowe możliwości. Obsługiwane wartości tool_type: api_rag, appointment_booking, call_forwarding, end_call, google_calendar, outlook_calendar, etermin, resmio, hubspot_crm, agent_transfer, mcp. Kształt obiektu settings zależy od typu.

etermin i resmio to działające narzędzia do rezerwacji wizyt/rezerwacji: agent sprawdza dostępność i rezerwuje, przekłada lub anuluje bezpośrednio na podłączonym koncie eTermin lub resmio. Oba wymagają wcześniejszego podłączenia odpowiedniej integracji na koncie.

Lista narzędzi

GET /v1/agent/:id/tools

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

Zwraca tablicę obiektów narzędzi.

Dodaj narzędzie

POST /v1/agent/:id/tools

Treść żądania

PoleTypWymaganeOpis
tool_typeenumTakJeden z obsługiwanych typów narzędzi powyżej.
settingsobjectTakKonfiguracja specyficzna dla typu.
is_activebooleanNieDomyślnie true.

Przykładowe żądanie

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" }
}'

Przykładowa odpowiedź201 Created

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

Zaktualizuj narzędzie

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

Zaktualizuj settings i/lub is_active dołączonego narzędzia (oba opcjonalne).

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 }'

Zwraca 200 OK ze zaktualizowanym obiektem narzędzia.

Usuń narzędzie

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"

Zwraca 204 No Content.


Baza wiedzy

Prześlij dokumenty, które Twoi agenci mogą przeszukiwać podczas połączenia, i kontroluj, którzy agenci korzystają z każdej bazy wiedzy. Przesyłanie plików używa multipart/form-data.

Lista baz wiedzy

GET /v1/knowledge-base/list

Parametry zapytania — opcjonalne customer_id, workspace_id.

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

Przykładowa odpowiedź200 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"]
}
]

Utwórz bazę wiedzy

POST /v1/knowledge-base

Utwórz bazę wiedzy wraz z jej pierwszym plikiem. To żądanie multipart/form-data — nie ma tworzenia „tylko z treści”.

Parametry zapytania — opcjonalne customer_id, workspace_id.

Pola formularza

PoleTypWymaganeOpis
filefileTakPierwszy dokument (np. PDF).
namestringTakNazwa bazy wiedzy (1–100 znaków).
descriptionstringTakOpis (1–300 znaków).
folderstringNieEtykieta folderu/kategorii (0–50 znaków).

Przykładowe żądanie

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"

Przykładowa odpowiedź200 OK (utworzona baza wiedzy, o tym samym kształcie co element listy).

Dodaj pojedynczy plik

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

Dodaj jeden plik do istniejącej bazy wiedzy. Nazwa pola multipart: file.

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

Zwraca 200 OK ze zaktualizowaną bazą wiedzy.

Dodaj wiele plików

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

Dodaj kilka plików naraz. Nazwa pola multipart: files (powtórz dla każdego pliku). Opcjonalne parametry zapytania customer_id, workspace_id.

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"

Zwraca 200 OK ze zaktualizowaną bazą wiedzy.

Usuń plik(i)

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

Usuń jeden lub więcej plików według ID. Mimo pojedynczej ścieżki treść przyjmuje tablicę.

Treść żądania

PoleTypWymaganeOpis
file_idsstring[]TakNiepusta tablica ID plików do usunięcia.
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"] }'

Zwraca 200 OK.

Przypisz agentów

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

Ustaw (zastąp) pełną listę agentów korzystających z tej bazy wiedzy.

Treść żądania

PoleTypWymaganeOpis
agent_idsstring[]TakID agentów, którzy powinni korzystać z tej bazy wiedzy.
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"] }'

Zwraca 200 OK.


Numery telefonów

Wyświetl swoje numery, znajdź numery dostępne do kupienia, kup numer, zaimportuj numery z podłączonego konta Twilio lub podłącz numer do trunku SIP.

Kupowanie numerów w panelu

Zakup numerów w panelu wykracza poza to, co udostępniają te punkty końcowe. Natychmiastowe numery bez formalności są dostępne w Austrii, Niemczech, Szwajcarii, USA i Kanadzie; każdy inny kraj korzysta z prowadzonego procesu samoobsługowego, w którym przesyłasz własne dokumenty regulacyjne (i możesz zapisać je jako wersję roboczą, aby wrócić później). Ekran zakupu oferuje typy lokalne, mobilne, krajowe i bezpłatne — plus numery zaawansowane (+€2/miesiąc) oraz numery do połączeń WhatsApp. BYO SIP jest niezależne od dostawcy (sipgate, Placetel, TENIOS, easybell, Zadarma, Telnyx, niestandardowe trunki — nie tylko import z Twilio). Zobacz Numery telefonów, aby poznać pełny proces.

Lista numerów telefonów

GET /v1/phone-number/list

Parametry zapytania — wszystkie opcjonalne: inbound_agent_id, outbound_agent_id, customer_id, workspace_id (oraz user_id, domyślnie Ty).

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

Przykładowa odpowiedź200 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"
}
]

Dostępne numery

GET /v1/phone-number/available

Wyświetl numery dostępne do zakupu dla danego kraju.

Parametry zapytania

NazwaTypWymaganeOpis
country_codestringNieKod kraju ISO (domyślnie US), np. DE, AT, CH.
area_codestringNieNumeryczny filtr numeru kierunkowego.
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"

Przykładowa odpowiedź200 OK

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

Kup numer

POST /v1/phone-number/buy

Kup konkretny numer. Opcjonalne parametry zapytania customer_id, workspace_id.

Treść żądania

PoleTypWymaganeOpis
phone_numberstringTakNumer do kupienia (E.164).
country_codestringTakKraj numeru (np. 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" }'

Przykładowa odpowiedź200 OK

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

Importuj z Twilio

POST /v1/phone-number/import-twilio

Zaimportuj numery z podłączonego konta Twilio. Opcjonalne parametry zapytania customer_id, workspace_id.

Treść żądania

PoleTypWymaganeOpis
sidstringTakTwilio 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" }'

Przykładowa odpowiedź200 OK (zaimportowany rekord numeru telefonu).

Podłącz do SIP

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

Podłącz istniejący numer do trunku SIP.

Treść żądania

PoleTypWymaganeOpis
phone_numberstringTakNumer do podłączenia (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" }'

Zwraca 200 OK (pusta treść).


Głosy

Lista głosów

GET /v1/voice/list

Wyświetl dostępne głosy. Filtruj według języka lub dostawcy i uwzględnij prywatne klony klienta.

Parametry zapytania

NazwaTypWymaganeOpis
languagestringNieFiltruj według języka, np. ?language=de.
providerstringNie11-Labs, openai, qwen lub azure.
customer_idstringNieUwzględnij również prywatne klony głosu tego klienta.
curl -G "https://api.hanc.ai/v1/voice/list" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "language=de"

Przykładowa odpowiedź200 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"
}
]

Subskrypcja

Szczegóły subskrypcji

GET /v1/subscription

Zwraca Twoją bieżącą subskrypcję, w tym salda kredytów i ustawienia doładowania.

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

Przykładowa odpowiedź200 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
}

Zwraca 404, jeśli nie istnieje żaden rekord subskrypcji.

Konfiguruj automatyczne doładowanie

PATCH /v1/subscription/auto-top-up

Włącz lub wyłącz automatyczne doładowanie kredytów.

Treść żądania

PoleTypWymaganeOpis
enabledbooleanTakWłącz lub wyłącz automatyczne doładowanie.
amountnumberNieKwota doładowania (20–1000). Ustaw przy włączaniu.
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 }'

Zwraca 200 OK ze zaktualizowaną subskrypcją.

Ustaw kwotę doładowania

PATCH /v1/subscription/top-up-amount

Zaktualizuj skonfigurowaną kwotę doładowania.

Treść żądania

PoleTypWymaganeOpis
top_up_amountnumberTakNowa kwota (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 }'

Zwraca 200 OK ze zaktualizowaną subskrypcją.


Klienci

Zarządzaj klientami w ramach swojej agencji. Te punkty końcowe wymagają, aby Twoje konto należało do agencji.

Lista klientów

GET /v1/customer/list

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

Przykładowa odpowiedź200 OK

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

Szczegóły klienta

GET /v1/customer/:id

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

Zwraca obiekt klienta lub 404, jeśli nie znaleziono.

Utwórz klienta

POST /v1/customer

Treść żądania

PoleTypWymaganeOpis
emailstringTakE-mail logowania klienta.
initial_passwordstringTakHasło początkowe (8–128 znaków).
namestringTakNazwa konta/firmy.
user_full_namestringTakImię i nazwisko użytkownika klienta.
visibilityobjectNieFlagi widoczności poszczególnych sekcji.
opt_out_promotionsbooleanNieWypisz klienta z wiadomości promocyjnych.
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"
}'

Zwraca 201 Created z nowym klientem. Zwraca 400, jeśli e-mail już istnieje lub Twoje konto nie należy do agencji.

Zaktualizuj klienta

PATCH /v1/customer/:id

Treść żądania — wszystkie opcjonalne: 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" }'

Zwraca 200 OK ze zaktualizowanym klientem.

Usuń klienta

DELETE /v1/customer/:id

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

Przykładowa odpowiedź

{ "message": "Customer deleted successfully" }

Przestrzenie robocze

Grupuj agentów, numery i bazy wiedzy w przestrzenie robocze i zarządzaj ich członkami.

Lista przestrzeni roboczych

GET /v1/workspaces/list

Opcjonalny parametr zapytania customer_id.

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

Przykładowa odpowiedź200 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" }
]
}
]

Utwórz przestrzeń roboczą

POST /v1/workspaces

Treść żądania

PoleTypWymaganeOpis
namestringTakNazwa przestrzeni roboczej (2–100 znaków).
descriptionstringNieOpis (0–500 znaków).
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." }'

Zwraca 201 Created z przestrzenią roboczą.

Szczegóły przestrzeni roboczej

GET /v1/workspaces/:id

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

Zwraca obiekt przestrzeni roboczej.

Zaktualizuj przestrzeń roboczą

PATCH /v1/workspaces/:id

Treść żądanianame (2–100) i/lub 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" }'

Zwraca 200 OK ze zaktualizowaną przestrzenią roboczą.

Usuń przestrzeń roboczą

DELETE /v1/workspaces/:id

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

Przykładowa odpowiedź

{ "message": "Workspace deleted successfully" }

Zaproś członka

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

Treść żądania

PoleTypWymaganeOpis
emailstringTakE-mail użytkownika do zaproszenia.
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" }'

Zwraca 201 Created z przestrzenią roboczą (nowy członek pojawia się w members).

Usuń członka

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

Treść żądania

PoleTypWymaganeOpis
emailstringTakE-mail członka do usunięcia.
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" }'

Zwraca 200 OK ze zaktualizowaną przestrzenią roboczą.


Co nie jest dostępne przez API

Niektóre operacje są dostępne tylko przez panel:

FunkcjaPowód
Zarządzanie kluczami APIBezpieczeństwo — klucze nie mogą tworzyć innych kluczy
Konfiguracja numeru telefonuWymaga interaktywnej konfiguracji
Integracja z Google CalendarWymaga interaktywnej autoryzacji
Rozliczenia i płatnościZarządzane przez panel

Potrzebujesz pomocy?

Skontaktuj się z naszym zespołem wsparcia pod adresem support@hanc.ai w sprawach związanych z API.