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 risposta200 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
idstringID della chiamata.

Esempio di richiesta

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

Esempio di risposta200 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_fromstringData di inizio (YYYY-MM-DD).
date_tostringData 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 risposta200 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 risposta200 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_idstringAgente su cui produrre il report.
date_fromstringData di inizio.
date_tostringData 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 risposta200 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_fromstringData di inizio.
date_tostringData 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 risposta200 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_fromstringData di inizio.
date_tostringData 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_idstringAgente che effettuerà la chiamata.
from_numberstringID chiamante in formato E.164 (es. +1234567890).
to_numberstringNumero 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 risposta201 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_idstringAgente 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 risposta201 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 risposta200 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
idstringID 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 querycustomer_id, workspace_id opzionali per associare il nuovo agente.

Body della richiesta

CampoTipoObbligatorioDescrizione
agent_namestringNome visualizzato.
llm_idstringID 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 risposta201 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 percorsoid (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 risposta200 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 risposta204 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 percorsoid (ID dell'agente).

Parametri query

NomeTipoObbligatorioDescrizione
date_fromstringData di inizio (YYYY-MM-DD).
date_tostringData 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 risposta200 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 risposta200 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_typeenumsend_email, send_sms, send_whatsapp o api_call.
settingsobjectConfigurazione 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 risposta201 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_typeenumUno dei tipi di tool supportati sopra.
settingsobjectConfigurazione 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 risposta201 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 querycustomer_id, workspace_id opzionali.

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

Esempio di risposta200 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 querycustomer_id, workspace_id opzionali.

Campi del modulo

CampoTipoObbligatorioDescrizione
filefileIl primo documento (es. un PDF).
namestringNome della knowledge base (1–100 caratteri).
descriptionstringDescrizione (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 risposta200 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[]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[]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 risposta200 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 risposta200 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_numberstringIl numero da acquistare (E.164).
country_codestringPaese 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 risposta200 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
sidstringTwilio 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 risposta200 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_numberstringIl 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 risposta200 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 risposta200 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
enabledbooleanAttiva 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_amountnumberNuovo 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 risposta200 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
emailstringEmail di accesso del cliente.
initial_passwordstringPassword iniziale (8–128 caratteri).
namestringNome dell'account/azienda.
user_full_namestringNome 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 risposta200 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
namestringNome 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 richiestaname (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
emailstringEmail 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
emailstringEmail 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.