Passa al contenuto principale

Riferimento API

Documentazione API completa per integrare Hanc.AI nelle tue applicazioni. Gestisci agenti, recupera dati delle chiamate, effettua chiamate e opera ogni parte della piattaforma in modo programmatico.

Ogni sezione qui sotto ti fornisce il metodo HTTP e il percorso, i parametri (percorso, query e body), un esempio di richiesta pronto all'uso e un esempio di risposta rappresentativo, così puoi integrare senza dover indovinare la forma dei payload.


Panoramica rapida​

Base URLhttps://api.hanc.ai
Prefisso di versioneTutte le route sono precedute da /v1
AutenticazioneChiave API tramite l'header x-api-key
FormatoJSON (richiesta e risposta)

Genera una chiave API da Integrazione → Chiavi API nella dashboard. Puoi avere fino a 3 chiavi per utente — vedi la sezione Chiavi API in Integrazioni per configurazione, permessi e indicazioni sulla sicurezza.

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

Autenticazione​

Invia la tua chiave nell'header x-api-key in ogni richiesta:

x-api-key: YOUR_API_KEY

La chiave si risolve nell'utente che la possiede, e ogni richiesta è automaticamente limitata a quell'utente — non devi mai passare un ID utente. Una chiave mancante o non valida viene rifiutata con 401 Unauthorized / 403 Forbidden.

suggerimento

Mantieni le chiavi lato server. Non incorporare mai una chiave API in un browser, in un'app mobile o in qualsiasi client che l'utente finale possa ispezionare. Se una chiave viene compromessa, revocala in Integrazione → Chiavi API ed emettine una nuova.


Convenzioni​

Alcune regole si applicano all'intera API. Leggerle una volta ti farà risparmiare tempo di debug:

  • Prefisso di versione — ogni percorso inizia con /v1 (es. https://api.hanc.ai/v1/agent/list).
  • Gli ID sono ObjectId di Mongo — qualsiasi :id (e :agentActionId, :agentToolId, ecc.) deve essere una stringa esadecimale di 24 caratteri. Gli ID malformati restituiscono 400 Bad Request.
  • I campi del body sconosciuti vengono rimossi — l'API valida i body delle richieste e scarta silenziosamente le proprietà che non riconosce, quindi un errore di battitura nel nome di un campo viene ignorato anziché memorizzato.
  • Date — gli endpoint di analytics/esportazione accettano date_from / date_to nel formato YYYY-MM-DD. date_to è inclusivo fino alla fine di quel giorno.
  • Parametri query di tipo array — dove un filtro accetta più valori (es. agent_ids, direction), puoi ripetere la chiave (?direction=inbound&direction=outbound) o separare i valori con virgole (?direction=inbound,outbound).
  • I timestamp nelle risposte sono in millisecondi epoch, salvo che siano mostrati come stringa ISO‑8601.

Indice degli endpoint​

Una mappa rapida di tutto ciò che è disponibile. La documentazione dettagliata di ciascuno segue qui sotto.

Chiamate​

AzioneMetodoEndpoint
Elenca chiamateGET/v1/call/list
Dettagli chiamata (trascrizione, sentiment, riepilogo)GET/v1/call/:id
Analytics generali (totali su un intervallo)GET/v1/call/general-metrics
Analytics giornaliereGET/v1/call/daily-metrics
Statistiche di sentimentGET/v1/call/sentiment-stats
Ripartizione dei costiGET/v1/call/costs-breakdown
Esporta chiamate (CSV)GET/v1/call/list/export
Esporta costi (CSV)GET/v1/call/costs-breakdown/export
Effettua una chiamata telefonicaPOST/v1/call/make-phone-call
Effettua una chiamata webPOST/v1/call/make-web-call

Agenti​

AzioneMetodoEndpoint
Elenca agentiGET/v1/agent/list
Dettagli agenteGET/v1/agent/:id
Crea agentePOST/v1/agent
Aggiorna agentePATCH/v1/agent/:id
Elimina agenteDELETE/v1/agent/:id
Statistiche delle chiamate dell'agenteGET/v1/agent/:id/call-stats
Elenca template di agentiGET/v1/agent/agent_template/list
Elenca azioniGET/v1/agent/:id/actions
Aggiungi azionePOST/v1/agent/:id/actions
Aggiorna azionePATCH/v1/agent/:id/actions/:agentActionId
Elimina azioneDELETE/v1/agent/:id/actions/:agentActionId
Elenca toolGET/v1/agent/:id/tools
Aggiungi toolPOST/v1/agent/:id/tools
Aggiorna toolPATCH/v1/agent/:id/tools/:agentToolId
Elimina toolDELETE/v1/agent/:id/tools/:agentToolId

Knowledge Base​

AzioneMetodoEndpoint
Elenca knowledge baseGET/v1/knowledge-base/list
Crea (con il primo file)POST/v1/knowledge-base
Aggiungi un singolo filePOST/v1/knowledge-base/:id/file
Aggiungi più filePOST/v1/knowledge-base/:id/files
Elimina fileDELETE/v1/knowledge-base/:id/file
Assegna agentiPUT/v1/knowledge-base/:id/agents

Numeri di telefono​

AzioneMetodoEndpoint
Elenca numeriGET/v1/phone-number/list
Numeri disponibili (per paese)GET/v1/phone-number/available
Acquista un numeroPOST/v1/phone-number/buy
Importa da TwilioPOST/v1/phone-number/import-twilio
Connetti a SIPPATCH/v1/phone-number/connect-to-sip

Voci · Abbonamento · Clienti · Workspace​

AzioneMetodoEndpoint
Elenca vociGET/v1/voice/list
Dettagli abbonamentoGET/v1/subscription
Configura ricarica automaticaPATCH/v1/subscription/auto-top-up
Imposta importo di ricaricaPATCH/v1/subscription/top-up-amount
Elenca clientiGET/v1/customer/list
Dettagli clienteGET/v1/customer/:id
Crea clientePOST/v1/customer
Aggiorna clientePATCH/v1/customer/:id
Elimina clienteDELETE/v1/customer/:id
Elenca workspaceGET/v1/workspaces/list
Crea workspacePOST/v1/workspaces
Dettagli workspaceGET/v1/workspaces/:id
Aggiorna workspacePATCH/v1/workspaces/:id
Elimina workspaceDELETE/v1/workspaces/:id
Invita membroPOST/v1/workspaces/:workspace_id/invite-member
Rimuovi membroDELETE/v1/workspaces/:workspace_id/remove-member

Chiamate

Gestisci e analizza le chiamate vocali: elenca e ispeziona le chiamate (trascrizione, sentiment, riepilogo), estrai metriche aggregate, esporta report CSV ed effettua chiamate telefoniche e web in uscita.

Elenca chiamate​

GET /v1/call/list

Elenca le chiamate del tuo account con filtri, ordinamento e paginazione.

Parametri query

NomeTipoObbligatorioDescrizione
agent_idsstring[]NoFiltra per uno o più ID agente (ripeti o separa con virgole).
agent_idstringNoFiltra per un singolo agente (legacy; preferisci agent_ids).
directionenum[]Noinbound e/o outbound.
call_statusenum[]Nostarted, success, failed, pending.
call_typeenum[]Nophone, web.
customer_idstringNoFiltra per cliente.
workspace_idstringNoFiltra per workspace.
date_from / date_tostringNoFiltro per intervallo (YYYY-MM-DD).
sort_orderenumNoasc o desc.
limitnumberNoNumero massimo di risultati da restituire.
skipnumberNoRisultati da saltare (offset di paginazione).

Esempio di richiesta

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"

Esempio di risposta — 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
}
]

Ottieni i dettagli di una chiamata​

GET /v1/call/:id

Recupera i dettagli completi di una chiamata — trascrizione, sentiment, riepilogo, crediti e metriche di prestazione.

Parametri di percorso

NomeTipoObbligatorioDescrizione
idstringSìID della chiamata.

Esempio di richiesta

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

Esempio di risposta — 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
}
}

Restituisce 404 se la chiamata non esiste o non appartiene al tuo account.

Metriche generali​

GET /v1/call/general-metrics

Totali aggregati (conteggio chiamate, durata totale e media) su un intervallo di date.

Parametri query

NomeTipoObbligatorioDescrizione
date_fromstringSìData di inizio (YYYY-MM-DD).
date_tostringSìData di fine (YYYY-MM-DD, inclusiva).
agent_id / agent_idsstring(s)NoLimita a uno o più agenti.
customer_idstringNoFiltra per cliente.
workspace_idstringNoFiltra per workspace.
direction / call_status / call_typeenum[]NoStessi filtri di Elenca chiamate.

Omettere date_from o date_to restituisce 400 Bad Request.

Esempio di richiesta

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"

Esempio di risposta — 200 OK

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

Metriche giornaliere​

GET /v1/call/daily-metrics

Durata totale delle chiamate per giorno su un intervallo di date — ideale per creare grafici delle tendenze.

Parametri query — gli stessi di Metriche generali (date_from/date_to obbligatori, più i filtri opzionali agente/cliente/workspace/direzione/stato/tipo).

Esempio di richiesta

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"

Esempio di risposta — 200 OK

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

Statistiche di sentiment​

GET /v1/call/sentiment-stats

Conteggi delle chiamate per sentiment per un agente su un intervallo di date.

Parametri query

NomeTipoObbligatorioDescrizione
agent_idstringSìAgente su cui produrre il report.
date_fromstringSìData di inizio.
date_tostringSìData di fine (inclusiva).

Esempio di richiesta

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"

Esempio di risposta — 200 OK

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

Ripartizione dei costi​

GET /v1/call/costs-breakdown

Ripartizione di costi/utilizzo (chiamate, minuti, crediti, token, dettaglio per modello) raggruppata per utente, agente o workspace.

Parametri query

NomeTipoObbligatorioDescrizione
date_fromstringSìData di inizio.
date_tostringSìData di fine (inclusiva).
group_byenumNouser (predefinito), agent o workspace.
customer_idstringNoFiltra per cliente (accesso agenzia).
workspace_idstringNoFiltra per workspace.

Esempio di richiesta

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"

Esempio di risposta — 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 }
}

Esporta chiamate (CSV)​

GET /v1/call/list/export

Scarica ogni chiamata di un intervallo di date come file CSV (con dettaglio dei token per chiamata e per modello).

Parametri query

NomeTipoObbligatorioDescrizione
date_fromstringSìData di inizio.
date_tostringSìData di fine (inclusiva).

Risposta — un file CSV (Content-Type: text/csv), servito come allegato chiamato call-details_<date_from>_<date_to>.csv.

Esempio di richiesta

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

Esporta costi (CSV)​

GET /v1/call/costs-breakdown/export

Scarica la ripartizione dei costi come file CSV.

Parametri query — gli stessi di Ripartizione dei costi (date_from/date_to obbligatori; opzionali group_by, customer_id, workspace_id).

Risposta — un file CSV servito come costs-breakdown_<date_from>_<date_to>.csv.

Esempio di richiesta

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

Effettua una chiamata telefonica​

POST /v1/call/make-phone-call

Effettua una chiamata telefonica in uscita da uno dei tuoi agenti.

Body della richiesta

CampoTipoObbligatorioDescrizione
agent_idstringSìAgente che effettuerà la chiamata.
from_numberstringSìID chiamante in formato E.164 (es. +1234567890).
to_numberstringSìNumero di telefono del destinatario.
custom_dataobjectNoDati arbitrari allegati alla chiamata.
dynamic_contextobjectNoContesto passato alla conversazione (es. nome del cliente).

Esempio di richiesta

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

Esempio di risposta — 201 Created

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

Effettua una chiamata web​

POST /v1/call/make-web-call

Crea una sessione di chiamata browser/WebRTC per uno dei tuoi agenti.

Body della richiesta

CampoTipoObbligatorioDescrizione
agent_idstringSìAgente che gestirà la chiamata web.
custom_dataobjectNoDati arbitrari allegati alla chiamata.
dynamic_contextobjectNoContesto passato alla conversazione.

Esempio di richiesta

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

Esempio di risposta — 201 Created

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

Agenti

Crea e gestisci agenti vocali, le loro azioni (ciò che fanno durante una chiamata — inviare email/SMS/WhatsApp, chiamare la tua API) e i loro tool (capacità come ricerca RAG, prenotazione di appuntamenti, inoltro chiamate, integrazioni calendario/CRM).

Elenca agenti​

GET /v1/agent/list

Restituisce tutti gli agenti posseduti dal tuo account.

Parametri query

NomeTipoObbligatorioDescrizione
customer_idstringNoLimita a un cliente.
workspace_idstringNoLimita a un workspace.

Esempio di richiesta

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

Esempio di risposta — 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"]
}
]

Ottieni un agente​

GET /v1/agent/:id

Restituisce un singolo agente.

Parametri di percorso

NomeTipoObbligatorioDescrizione
idstringSìID dell'agente.

Esempio di richiesta

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

Restituisce l'oggetto agente (stessa forma di un elemento di Elenca agenti), oppure 404 se non trovato.

Crea un agente​

POST /v1/agent

Crea un nuovo agente. Solo agent_name e llm_id sono obbligatori — tutto il resto è opzionale e ricade su valori predefiniti sensati.

Parametri query — customer_id, workspace_id opzionali per associare il nuovo agente.

Body della richiesta

CampoTipoObbligatorioDescrizione
agent_namestringSìNome visualizzato.
llm_idstringSìID dell'LLM che alimenta l'agente.
voiceobjectNo{ "voice_id": "<id>" }.
interruption_sensitivitynumberNoCon quanta facilità l'agente cede quando viene interrotto (es. 0.5).
call_settingsobjectNoLingua, promemoria, timeout di silenzio, analisi del sentiment, riepilogo chiamata, max_call_duration_minutes (1–15).
data_retrievalobject[]NoCampi che l'agente raccoglie durante una chiamata.
webhook_urlstringNoURL notificato degli eventi dell'agente.
is_data_collection_activebooleanNoAbilita il modulo di raccolta dati.

Esempio di richiesta

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

Esempio di risposta — 201 Created (l'oggetto agente creato).

Aggiorna un agente​

PATCH /v1/agent/:id

Aggiorna parzialmente un agente. Tutti i campi del body sono opzionali — invia solo ciò che vuoi modificare.

Parametri di percorso — id (ID dell'agente).

Body della richiesta — qualsiasi sottoinsieme dei campi di creazione, più folder, status (es. active), is_customer_memory_active, widget_settings, callback_settings. All'interno di call_settings puoi anche impostare recording_enabled, stt_languages (fino a 4 codici BCP‑47) e max_call_duration_minutes.

Esempio di richiesta

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

Esempio di risposta — 200 OK (l'oggetto agente aggiornato).

Elimina un agente​

DELETE /v1/agent/:id

Elimina un agente.

Esempio di richiesta

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

Esempio di risposta — 204 No Content (body vuoto).

Statistiche delle chiamate dell'agente​

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

Conteggi delle chiamate per giorno per un agente su un intervallo di date.

Parametri di percorso — id (ID dell'agente).

Parametri query

NomeTipoObbligatorioDescrizione
date_fromstringSìData di inizio (YYYY-MM-DD).
date_tostringSìData di fine (YYYY-MM-DD).

Esempio di richiesta

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"

Esempio di risposta — 200 OK

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

Elenca template di agenti​

GET /v1/agent/agent_template/list

Restituisce il catalogo di template di agenti predefiniti che puoi clonare. Nessun parametro.

Esempio di richiesta

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

Esempio di risposta — 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?" }
}
]

Azioni dell'agente​

Le azioni sono cose che un agente esegue durante una chiamata. Valori action_type supportati: send_email, send_sms, send_whatsapp, api_call. La forma dell'oggetto settings dipende dal tipo.

Elenca azioni​

GET /v1/agent/:id/actions

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

Restituisce un array di oggetti azione.

Aggiungi un'azione​

POST /v1/agent/:id/actions

Body della richiesta

CampoTipoObbligatorioDescrizione
action_typeenumSìsend_email, send_sms, send_whatsapp o api_call.
settingsobjectSìConfigurazione specifica del tipo.
is_activebooleanNoPredefinito a true.

Esempio di richiesta

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

Esempio di risposta — 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
}

Aggiorna un'azione​

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

Aggiorna i settings e/o is_active di un'azione collegata. Entrambi i campi del body sono opzionali.

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

Restituisce 200 OK con l'oggetto azione aggiornato.

Elimina un'azione​

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"

Restituisce 204 No Content.

Tool dell'agente​

I tool danno a un agente capacità aggiuntive. Valori tool_type supportati: api_rag, appointment_booking, call_forwarding, end_call, google_calendar, outlook_calendar, etermin, resmio, hubspot_crm, agent_transfer, mcp. La forma dell'oggetto settings dipende dal tipo.

etermin e resmio sono tool di prenotazione di appuntamenti/prenotazioni in tempo reale: l'agente verifica la disponibilità e prenota, riprogramma o cancella direttamente nell'account eTermin o resmio collegato. Entrambi richiedono che la relativa integrazione sia prima collegata all'account.

Elenca tool​

GET /v1/agent/:id/tools

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

Restituisce un array di oggetti tool.

Aggiungi un tool​

POST /v1/agent/:id/tools

Body della richiesta

CampoTipoObbligatorioDescrizione
tool_typeenumSìUno dei tipi di tool supportati sopra.
settingsobjectSìConfigurazione specifica del tipo.
is_activebooleanNoPredefinito a true.

Esempio di richiesta

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

Esempio di risposta — 201 Created

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

Aggiorna un tool​

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

Aggiorna i settings e/o is_active di un tool collegato (entrambi opzionali).

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

Restituisce 200 OK con l'oggetto tool aggiornato.

Elimina un tool​

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"

Restituisce 204 No Content.


Knowledge Base

Carica documenti che i tuoi agenti possono cercare durante una chiamata e controlla quali agenti usano ciascuna knowledge base. I caricamenti di file usano multipart/form-data.

Elenca knowledge base​

GET /v1/knowledge-base/list

Parametri query — customer_id, workspace_id opzionali.

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

Esempio di risposta — 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"]
}
]

Crea una knowledge base​

POST /v1/knowledge-base

Crea una knowledge base insieme al suo primo file. Questa è una richiesta multipart/form-data — non esiste una creazione con il solo body.

Parametri query — customer_id, workspace_id opzionali.

Campi del modulo

CampoTipoObbligatorioDescrizione
filefileSìIl primo documento (es. un PDF).
namestringSìNome della knowledge base (1–100 caratteri).
descriptionstringSìDescrizione (1–300 caratteri).
folderstringNoEtichetta di cartella/categoria (0–50 caratteri).

Esempio di richiesta

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"

Esempio di risposta — 200 OK (la knowledge base creata, stessa forma di un elemento della lista).

Aggiungi un singolo file​

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

Aggiungi un file a una knowledge base esistente. Nome del campo 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"

Restituisce 200 OK con la knowledge base aggiornata.

Aggiungi più file​

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

Aggiungi diversi file in una volta. Nome del campo multipart: files (ripeti per ogni file). Parametri query opzionali 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"

Restituisce 200 OK con la knowledge base aggiornata.

Elimina file​

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

Rimuovi uno o più file per ID. Nonostante il percorso al singolare, il body accetta un array.

Body della richiesta

CampoTipoObbligatorioDescrizione
file_idsstring[]SìArray non vuoto di ID dei file da eliminare.
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"] }'

Restituisce 200 OK.

Assegna agenti​

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

Imposta (sostituisce) l'intero elenco di agenti che usano questa knowledge base.

Body della richiesta

CampoTipoObbligatorioDescrizione
agent_idsstring[]SìID degli agenti che dovrebbero usare questa knowledge base.
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"] }'

Restituisce 200 OK.


Numeri di telefono

Elenca i tuoi numeri, trova numeri disponibili per l'acquisto, acquistane uno, importa numeri da un account Twilio collegato o connetti un numero a un trunk SIP.

Acquisto di numeri nella dashboard

L'acquisto di numeri nella dashboard va oltre ciò che questi endpoint espongono. Numeri istantanei senza pratiche burocratiche sono disponibili in Austria, Germania, Svizzera, Stati Uniti e Canada; ogni altro paese usa un flusso self-service guidato in cui invii i tuoi documenti normativi (e puoi salvarli come bozza per riprenderli più tardi). La schermata di acquisto offre i tipi locale, mobile, nazionale e numero verde — più numeri avanzati (+€2/mese) e numeri per le chiamate WhatsApp. Il BYO SIP è neutrale rispetto al fornitore (sipgate, Placetel, TENIOS, easybell, Zadarma, Telnyx, trunk personalizzati — non solo importazione da Twilio). Vedi Numeri di telefono per il flusso completo.

Elenca numeri di telefono​

GET /v1/phone-number/list

Parametri query — tutti opzionali: inbound_agent_id, outbound_agent_id, customer_id, workspace_id (e user_id, che ha come predefinito te stesso).

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

Esempio di risposta — 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"
}
]

Numeri disponibili​

GET /v1/phone-number/available

Elenca i numeri disponibili per l'acquisto per un paese.

Parametri query

NomeTipoObbligatorioDescrizione
country_codestringNoCodice paese ISO (predefinito US), es. DE, AT, CH.
area_codestringNoFiltro per prefisso numerico.
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"

Esempio di risposta — 200 OK

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

Acquista un numero​

POST /v1/phone-number/buy

Acquista un numero specifico. Parametri query opzionali customer_id, workspace_id.

Body della richiesta

CampoTipoObbligatorioDescrizione
phone_numberstringSìIl numero da acquistare (E.164).
country_codestringSìPaese del numero (es. 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" }'

Esempio di risposta — 200 OK

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

Importa da Twilio​

POST /v1/phone-number/import-twilio

Importa numeri da un account Twilio collegato. Parametri query opzionali customer_id, workspace_id.

Body della richiesta

CampoTipoObbligatorioDescrizione
sidstringSìTwilio 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" }'

Esempio di risposta — 200 OK (il record del numero di telefono importato).

Connetti a SIP​

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

Connette un numero esistente a un trunk SIP.

Body della richiesta

CampoTipoObbligatorioDescrizione
phone_numberstringSìIl numero da connettere (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" }'

Restituisce 200 OK (body vuoto).


Voci

Elenca voci​

GET /v1/voice/list

Elenca le voci disponibili. Filtra per lingua o provider e includi i cloni privati di un cliente.

Parametri query

NomeTipoObbligatorioDescrizione
languagestringNoFiltra per lingua, es. ?language=de.
providerstringNo11-Labs, openai, qwen o azure.
customer_idstringNoIncludi anche i cloni vocali privati di questo cliente.
curl -G "https://api.hanc.ai/v1/voice/list" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "language=de"

Esempio di risposta — 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"
}
]

Abbonamento

Dettagli abbonamento​

GET /v1/subscription

Restituisce il tuo abbonamento attuale, inclusi i saldi crediti e le impostazioni di ricarica.

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

Esempio di risposta — 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
}

Restituisce 404 se non esiste alcun record di abbonamento.

Configura la ricarica automatica​

PATCH /v1/subscription/auto-top-up

Abilita o disabilita la ricarica automatica dei crediti.

Body della richiesta

CampoTipoObbligatorioDescrizione
enabledbooleanSìAttiva o disattiva la ricarica automatica.
amountnumberNoImporto di cui ricaricare (20–1000). Impostalo quando abiliti.
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 }'

Restituisce 200 OK con l'abbonamento aggiornato.

Imposta l'importo di ricarica​

PATCH /v1/subscription/top-up-amount

Aggiorna l'importo di ricarica configurato.

Body della richiesta

CampoTipoObbligatorioDescrizione
top_up_amountnumberSìNuovo importo (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 }'

Restituisce 200 OK con l'abbonamento aggiornato.


Clienti

Gestisci i clienti sotto la tua agenzia. Questi endpoint richiedono che il tuo account appartenga a un'agenzia.

Elenca clienti​

GET /v1/customer/list

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

Esempio di risposta — 200 OK

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

Dettagli cliente​

GET /v1/customer/:id

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

Restituisce l'oggetto cliente, oppure 404 se non trovato.

Crea un cliente​

POST /v1/customer

Body della richiesta

CampoTipoObbligatorioDescrizione
emailstringSìEmail di accesso del cliente.
initial_passwordstringSìPassword iniziale (8–128 caratteri).
namestringSìNome dell'account/azienda.
user_full_namestringSìNome completo dell'utente cliente.
visibilityobjectNoFlag di visibilità per sezione.
opt_out_promotionsbooleanNoEsclude il cliente dai messaggi promozionali.
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"
}'

Restituisce 201 Created con il nuovo cliente. Restituisce 400 se l'email esiste già o se il tuo account non fa parte di un'agenzia.

Aggiorna un cliente​

PATCH /v1/customer/:id

Body della richiesta — tutti opzionali: 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" }'

Restituisce 200 OK con il cliente aggiornato.

Elimina un cliente​

DELETE /v1/customer/:id

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

Esempio di risposta

{ "message": "Customer deleted successfully" }

Workspace

Raggruppa agenti, numeri e knowledge base in workspace e gestisci i loro membri.

Elenca workspace​

GET /v1/workspaces/list

Parametro query opzionale customer_id.

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

Esempio di risposta — 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" }
]
}
]

Crea un workspace​

POST /v1/workspaces

Body della richiesta

CampoTipoObbligatorioDescrizione
namestringSìNome del workspace (2–100 caratteri).
descriptionstringNoDescrizione (0–500 caratteri).
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." }'

Restituisce 201 Created con il workspace.

Dettagli workspace​

GET /v1/workspaces/:id

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

Restituisce l'oggetto workspace.

Aggiorna un workspace​

PATCH /v1/workspaces/:id

Body della richiesta — name (2–100) e/o 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" }'

Restituisce 200 OK con il workspace aggiornato.

Elimina un workspace​

DELETE /v1/workspaces/:id

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

Esempio di risposta

{ "message": "Workspace deleted successfully" }

Invita un membro​

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

Body della richiesta

CampoTipoObbligatorioDescrizione
emailstringSìEmail dell'utente da invitare.
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" }'

Restituisce 201 Created con il workspace (il nuovo membro compare in members).

Rimuovi un membro​

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

Body della richiesta

CampoTipoObbligatorioDescrizione
emailstringSìEmail del membro da rimuovere.
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" }'

Restituisce 200 OK con il workspace aggiornato.


Cosa non è disponibile tramite API​

Alcune operazioni sono disponibili solo tramite la dashboard:

FunzionalitàMotivo
Gestione delle chiavi APISicurezza — le chiavi non possono creare altre chiavi
Configurazione dei numeri di telefonoRichiede una configurazione interattiva
Integrazione con Google CalendarRichiede un'autorizzazione interattiva
Fatturazione e pagamentiGestiti tramite la dashboard

Hai bisogno di aiuto?​

Contatta il nostro team di supporto all'indirizzo support@hanc.ai per domande relative all'API.