Saltar al contenido principal

Referencia de la API

Documentación completa de la API para integrar Hanc.AI en tus aplicaciones. Gestiona agentes, obtén datos de llamadas, realiza llamadas y opera cada parte de la plataforma de forma programática.

Cada sección de abajo te ofrece el método y la ruta HTTP, los parámetros (de ruta, de consulta y de cuerpo), una petición de ejemplo lista para ejecutar y una respuesta de ejemplo representativa para que puedas integrar sin tener que adivinar la forma de las cargas útiles.


Resumen rápido​

URL basehttps://api.hanc.ai
Prefijo de versiónTodas las rutas llevan el prefijo /v1
AutenticaciónClave de API mediante la cabecera x-api-key
FormatoJSON (petición y respuesta)

Genera una clave de API desde Integración → Claves de API en el panel. Puedes tener hasta 3 claves por usuario — consulta la sección Claves de API en Integraciones para la configuración, los permisos y las recomendaciones de seguridad.

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

Autenticación​

Envía tu clave en la cabecera x-api-key en cada petición:

x-api-key: YOUR_API_KEY

La clave se resuelve al usuario que la posee, y cada petición se acota automáticamente a ese usuario — nunca pasas un ID de usuario. Una clave ausente o inválida se rechaza con 401 Unauthorized / 403 Forbidden.

consejo

Mantén las claves en el lado del servidor. Nunca incrustes una clave de API en un navegador, una aplicación móvil o cualquier cliente que el usuario final pueda inspeccionar. Si una clave se filtra, revócala en Integración → Claves de API y emite una nueva.


Convenciones​

Unas cuantas reglas se aplican a toda la API. Leerlas una vez te ahorrará tiempo de depuración:

  • Prefijo de versión — cada ruta empieza por /v1 (p. ej. https://api.hanc.ai/v1/agent/list).
  • Los ID son ObjectIds de Mongo — cualquier :id (y :agentActionId, :agentToolId, etc.) debe ser una cadena hexadecimal de 24 caracteres. Los ID mal formados devuelven 400 Bad Request.
  • Los campos de cuerpo desconocidos se descartan — la API valida los cuerpos de las peticiones y descarta silenciosamente las propiedades que no reconoce, de modo que un error tipográfico en el nombre de un campo se ignora en lugar de almacenarse.
  • Fechas — los endpoints de analíticas/exportación toman date_from / date_to como YYYY-MM-DD. date_to es inclusivo hasta el final de ese día.
  • Parámetros de consulta de tipo array — cuando un filtro admite varios valores (p. ej. agent_ids, direction), puedes repetir la clave (?direction=inbound&direction=outbound) o separarla por comas (?direction=inbound,outbound).
  • Las marcas de tiempo en las respuestas son milisegundos epoch salvo que se muestren como una cadena ISO‑8601.

Índice de endpoints​

Un mapa rápido de todo lo disponible. La documentación detallada de cada uno sigue a continuación.

Llamadas​

AcciónMétodoEndpoint
Listar llamadasGET/v1/call/list
Detalles de la llamada (transcripción, sentimiento, resumen)GET/v1/call/:id
Analíticas generales (totales en un rango)GET/v1/call/general-metrics
Analíticas diariasGET/v1/call/daily-metrics
Estadísticas de sentimientoGET/v1/call/sentiment-stats
Desglose de costesGET/v1/call/costs-breakdown
Exportar llamadas (CSV)GET/v1/call/list/export
Exportar costes (CSV)GET/v1/call/costs-breakdown/export
Realizar una llamada telefónicaPOST/v1/call/make-phone-call
Realizar una llamada webPOST/v1/call/make-web-call

Agentes​

AcciónMétodoEndpoint
Listar agentesGET/v1/agent/list
Detalles del agenteGET/v1/agent/:id
Crear agentePOST/v1/agent
Actualizar agentePATCH/v1/agent/:id
Eliminar agenteDELETE/v1/agent/:id
Estadísticas de llamadas del agenteGET/v1/agent/:id/call-stats
Listar plantillas de agenteGET/v1/agent/agent_template/list
Listar accionesGET/v1/agent/:id/actions
Añadir acciónPOST/v1/agent/:id/actions
Actualizar acciónPATCH/v1/agent/:id/actions/:agentActionId
Eliminar acciónDELETE/v1/agent/:id/actions/:agentActionId
Listar herramientasGET/v1/agent/:id/tools
Añadir herramientaPOST/v1/agent/:id/tools
Actualizar herramientaPATCH/v1/agent/:id/tools/:agentToolId
Eliminar herramientaDELETE/v1/agent/:id/tools/:agentToolId

Base de conocimiento​

AcciónMétodoEndpoint
Listar bases de conocimientoGET/v1/knowledge-base/list
Crear (con el primer archivo)POST/v1/knowledge-base
Añadir un solo archivoPOST/v1/knowledge-base/:id/file
Añadir varios archivosPOST/v1/knowledge-base/:id/files
Eliminar archivo(s)DELETE/v1/knowledge-base/:id/file
Asignar agentesPUT/v1/knowledge-base/:id/agents

Números de teléfono​

AcciónMétodoEndpoint
Listar númerosGET/v1/phone-number/list
Números disponibles (por país)GET/v1/phone-number/available
Comprar un númeroPOST/v1/phone-number/buy
Importar desde TwilioPOST/v1/phone-number/import-twilio
Conectar a SIPPATCH/v1/phone-number/connect-to-sip

Voces · Suscripción · Clientes · Espacios de trabajo​

AcciónMétodoEndpoint
Listar vocesGET/v1/voice/list
Detalles de la suscripciónGET/v1/subscription
Configurar recarga automáticaPATCH/v1/subscription/auto-top-up
Establecer importe de recargaPATCH/v1/subscription/top-up-amount
Listar clientesGET/v1/customer/list
Detalles del clienteGET/v1/customer/:id
Crear clientePOST/v1/customer
Actualizar clientePATCH/v1/customer/:id
Eliminar clienteDELETE/v1/customer/:id
Listar espacios de trabajoGET/v1/workspaces/list
Crear espacio de trabajoPOST/v1/workspaces
Detalles del espacio de trabajoGET/v1/workspaces/:id
Actualizar espacio de trabajoPATCH/v1/workspaces/:id
Eliminar espacio de trabajoDELETE/v1/workspaces/:id
Invitar miembroPOST/v1/workspaces/:workspace_id/invite-member
Eliminar miembroDELETE/v1/workspaces/:workspace_id/remove-member

Llamadas

Gestiona y analiza las llamadas de voz: lista e inspecciona llamadas (transcripción, sentimiento, resumen), extrae métricas agregadas, exporta informes CSV y realiza llamadas telefónicas y web salientes.

Listar llamadas​

GET /v1/call/list

Lista las llamadas de tu cuenta con filtrado, ordenación y paginación.

Parámetros de consulta

NombreTipoObligatorioDescripción
agent_idsstring[]NoFiltra por uno o varios ID de agente (repite o separa por comas).
agent_idstringNoFiltra por un solo agente (heredado; prefiere agent_ids).
directionenum[]Noinbound y/o outbound.
call_statusenum[]Nostarted, success, failed, pending.
call_typeenum[]Nophone, web.
customer_idstringNoFiltra por cliente.
workspace_idstringNoFiltra por espacio de trabajo.
date_from / date_tostringNoFiltro de rango (YYYY-MM-DD).
sort_orderenumNoasc o desc.
limitnumberNoMáximo de resultados a devolver.
skipnumberNoResultados a omitir (desplazamiento de paginación).

Petición de ejemplo

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"

Respuesta de ejemplo — 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
}
]

Obtener detalles de la llamada​

GET /v1/call/:id

Recupera todos los detalles de una llamada — transcripción, sentimiento, resumen, créditos y métricas de rendimiento.

Parámetros de ruta

NombreTipoObligatorioDescripción
idstringSíID de la llamada.

Petición de ejemplo

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

Respuesta de ejemplo — 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
}
}

Devuelve 404 si la llamada no existe o no pertenece a tu cuenta.

Métricas generales​

GET /v1/call/general-metrics

Totales agregados (número de llamadas, duración total y media) en un rango de fechas.

Parámetros de consulta

NombreTipoObligatorioDescripción
date_fromstringSíFecha de inicio (YYYY-MM-DD).
date_tostringSíFecha de fin (YYYY-MM-DD, inclusive).
agent_id / agent_idsstring(s)NoRestringe a uno o varios agentes.
customer_idstringNoFiltra por cliente.
workspace_idstringNoFiltra por espacio de trabajo.
direction / call_status / call_typeenum[]NoLos mismos filtros que en Listar llamadas.

Omitir date_from o date_to devuelve 400 Bad Request.

Petición de ejemplo

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"

Respuesta de ejemplo — 200 OK

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

Métricas diarias​

GET /v1/call/daily-metrics

Duración total de llamada por día en un rango de fechas — ideal para graficar tendencias.

Parámetros de consulta — los mismos que Métricas generales (date_from/date_to obligatorios, más los filtros opcionales de agente/cliente/espacio de trabajo/dirección/estado/tipo).

Petición de ejemplo

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"

Respuesta de ejemplo — 200 OK

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

Estadísticas de sentimiento​

GET /v1/call/sentiment-stats

Recuentos de llamadas por sentimiento para un agente en un rango de fechas.

Parámetros de consulta

NombreTipoObligatorioDescripción
agent_idstringSíAgente sobre el que informar.
date_fromstringSíFecha de inicio.
date_tostringSíFecha de fin (inclusive).

Petición de ejemplo

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"

Respuesta de ejemplo — 200 OK

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

Desglose de costes​

GET /v1/call/costs-breakdown

Desglose de coste/uso (llamadas, minutos, créditos, tokens, detalle por modelo) agrupado por usuario, agente o espacio de trabajo.

Parámetros de consulta

NombreTipoObligatorioDescripción
date_fromstringSíFecha de inicio.
date_tostringSíFecha de fin (inclusive).
group_byenumNouser (por defecto), agent o workspace.
customer_idstringNoFiltra por cliente (acceso de agencia).
workspace_idstringNoFiltra por espacio de trabajo.

Petición de ejemplo

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"

Respuesta de ejemplo — 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 }
}

Exportar llamadas (CSV)​

GET /v1/call/list/export

Descarga todas las llamadas de un rango de fechas como archivo CSV (con detalle de tokens por llamada y por modelo).

Parámetros de consulta

NombreTipoObligatorioDescripción
date_fromstringSíFecha de inicio.
date_tostringSíFecha de fin (inclusive).

Respuesta — un archivo CSV (Content-Type: text/csv), servido como adjunto llamado call-details_<date_from>_<date_to>.csv.

Petición de ejemplo

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

Exportar costes (CSV)​

GET /v1/call/costs-breakdown/export

Descarga el desglose de costes como archivo CSV.

Parámetros de consulta — los mismos que Desglose de costes (date_from/date_to obligatorios; opcionales group_by, customer_id, workspace_id).

Respuesta — un archivo CSV servido como costs-breakdown_<date_from>_<date_to>.csv.

Petición de ejemplo

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

Realizar una llamada telefónica​

POST /v1/call/make-phone-call

Realiza una llamada telefónica saliente desde uno de tus agentes.

Cuerpo de la petición

CampoTipoObligatorioDescripción
agent_idstringSíAgente que realizará la llamada.
from_numberstringSíID de llamante en formato E.164 (p. ej. +1234567890).
to_numberstringSíNúmero de teléfono del destinatario.
custom_dataobjectNoDatos arbitrarios adjuntos a la llamada.
dynamic_contextobjectNoContexto que se pasa a la conversación (p. ej. el nombre del cliente).

Petición de ejemplo

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

Respuesta de ejemplo — 201 Created

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

Realizar una llamada web​

POST /v1/call/make-web-call

Crea una sesión de llamada de navegador/WebRTC para uno de tus agentes.

Cuerpo de la petición

CampoTipoObligatorioDescripción
agent_idstringSíAgente que atenderá la llamada web.
custom_dataobjectNoDatos arbitrarios adjuntos a la llamada.
dynamic_contextobjectNoContexto que se pasa a la conversación.

Petición de ejemplo

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

Respuesta de ejemplo — 201 Created

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

Agentes

Crea y gestiona agentes de voz, sus acciones (lo que hacen durante una llamada — enviar correo/SMS/WhatsApp, llamar a tu API) y sus herramientas (capacidades como búsqueda RAG, reserva de citas, desvío de llamadas, integraciones de calendario/CRM).

Listar agentes​

GET /v1/agent/list

Devuelve todos los agentes que posee tu cuenta.

Parámetros de consulta

NombreTipoObligatorioDescripción
customer_idstringNoAcota a un cliente.
workspace_idstringNoAcota a un espacio de trabajo.

Petición de ejemplo

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

Respuesta de ejemplo — 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"]
}
]

Obtener un agente​

GET /v1/agent/:id

Devuelve un único agente.

Parámetros de ruta

NombreTipoObligatorioDescripción
idstringSíID del agente.

Petición de ejemplo

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

Devuelve el objeto del agente (con la misma forma que un elemento de Listar agentes), o 404 si no se encuentra.

Crear un agente​

POST /v1/agent

Crea un nuevo agente. Solo agent_name y llm_id son obligatorios — todo lo demás es opcional y recurre a valores por defecto razonables.

Parámetros de consulta — opcionales customer_id, workspace_id para asociar el nuevo agente.

Cuerpo de la petición

CampoTipoObligatorioDescripción
agent_namestringSíNombre visible.
llm_idstringSíID del LLM que respalda al agente.
voiceobjectNo{ "voice_id": "<id>" }.
interruption_sensitivitynumberNoCon qué facilidad cede el agente al ser interrumpido (p. ej. 0.5).
call_settingsobjectNoIdioma, recordatorios, tiempo de espera por silencio, análisis de sentimiento, resumen de llamada, max_call_duration_minutes (1–15).
data_retrievalobject[]NoCampos que el agente recopila durante una llamada.
webhook_urlstringNoURL notificada de los eventos del agente.
is_data_collection_activebooleanNoHabilita el formulario de recopilación de datos.

Petición de ejemplo

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

Respuesta de ejemplo — 201 Created (el objeto del agente creado).

Actualizar un agente​

PATCH /v1/agent/:id

Actualiza parcialmente un agente. Todos los campos del cuerpo son opcionales — envía solo lo que quieras cambiar.

Parámetros de ruta — id (ID del agente).

Cuerpo de la petición — cualquier subconjunto de los campos de creación, más folder, status (p. ej. active), is_customer_memory_active, widget_settings, callback_settings. Dentro de call_settings también puedes establecer recording_enabled, stt_languages (hasta 4 códigos BCP‑47) y max_call_duration_minutes.

Petición de ejemplo

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

Respuesta de ejemplo — 200 OK (el objeto del agente actualizado).

Eliminar un agente​

DELETE /v1/agent/:id

Elimina un agente.

Petición de ejemplo

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

Respuesta de ejemplo — 204 No Content (cuerpo vacío).

Estadísticas de llamadas del agente​

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

Recuentos de llamadas por día para un agente en un rango de fechas.

Parámetros de ruta — id (ID del agente).

Parámetros de consulta

NombreTipoObligatorioDescripción
date_fromstringSíFecha de inicio (YYYY-MM-DD).
date_tostringSíFecha de fin (YYYY-MM-DD).

Petición de ejemplo

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"

Respuesta de ejemplo — 200 OK

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

Listar plantillas de agente​

GET /v1/agent/agent_template/list

Devuelve el catálogo de plantillas de agente preconstruidas que puedes clonar. Sin parámetros.

Petición de ejemplo

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

Respuesta de ejemplo — 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?" }
}
]

Acciones del agente​

Las acciones son cosas que un agente realiza durante una llamada. Valores de action_type admitidos: send_email, send_sms, send_whatsapp, api_call. La forma del objeto settings depende del tipo.

Listar acciones​

GET /v1/agent/:id/actions

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

Devuelve un array de objetos de acción.

Añadir una acción​

POST /v1/agent/:id/actions

Cuerpo de la petición

CampoTipoObligatorioDescripción
action_typeenumSísend_email, send_sms, send_whatsapp o api_call.
settingsobjectSíConfiguración específica del tipo.
is_activebooleanNoPor defecto true.

Petición de ejemplo

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

Respuesta de ejemplo — 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
}

Actualizar una acción​

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

Actualiza los settings y/o is_active de una acción adjunta. Ambos campos del cuerpo son opcionales.

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

Devuelve 200 OK con el objeto de acción actualizado.

Eliminar una acción​

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"

Devuelve 204 No Content.

Herramientas del agente​

Las herramientas dan al agente capacidades adicionales. Valores de tool_type admitidos: api_rag, appointment_booking, call_forwarding, end_call, google_calendar, outlook_calendar, etermin, resmio, hubspot_crm, agent_transfer, mcp. La forma del objeto settings depende del tipo.

etermin y resmio son herramientas activas de reserva de citas/mesas: el agente comprueba la disponibilidad y reserva, reprograma o cancela directamente en la cuenta conectada de eTermin o resmio. Ambas requieren que la integración correspondiente esté conectada en la cuenta primero.

Listar herramientas​

GET /v1/agent/:id/tools

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

Devuelve un array de objetos de herramienta.

Añadir una herramienta​

POST /v1/agent/:id/tools

Cuerpo de la petición

CampoTipoObligatorioDescripción
tool_typeenumSíUno de los tipos de herramienta admitidos anteriores.
settingsobjectSíConfiguración específica del tipo.
is_activebooleanNoPor defecto true.

Petición de ejemplo

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

Respuesta de ejemplo — 201 Created

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

Actualizar una herramienta​

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

Actualiza los settings y/o is_active de una herramienta adjunta (ambos opcionales).

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

Devuelve 200 OK con el objeto de herramienta actualizado.

Eliminar una herramienta​

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"

Devuelve 204 No Content.


Base de conocimiento

Sube documentos que tus agentes pueden buscar durante una llamada y controla qué agentes usan cada base de conocimiento. Las subidas de archivos usan multipart/form-data.

Listar bases de conocimiento​

GET /v1/knowledge-base/list

Parámetros de consulta — opcionales customer_id, workspace_id.

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

Respuesta de ejemplo — 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"]
}
]

Crear una base de conocimiento​

POST /v1/knowledge-base

Crea una base de conocimiento junto con su primer archivo. Se trata de una petición multipart/form-data — no existe una creación "solo con cuerpo".

Parámetros de consulta — opcionales customer_id, workspace_id.

Campos del formulario

CampoTipoObligatorioDescripción
filefileSíEl primer documento (p. ej. un PDF).
namestringSíNombre de la base de conocimiento (1–100 caracteres).
descriptionstringSíDescripción (1–300 caracteres).
folderstringNoEtiqueta de carpeta/categoría (0–50 caracteres).

Petición de ejemplo

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"

Respuesta de ejemplo — 200 OK (la base de conocimiento creada, con la misma forma que un elemento de la lista).

Añadir un solo archivo​

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

Añade un archivo a una base de conocimiento existente. Nombre 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"

Devuelve 200 OK con la base de conocimiento actualizada.

Añadir varios archivos​

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

Añade varios archivos a la vez. Nombre del campo multipart: files (repite por cada archivo). Parámetros de consulta opcionales 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"

Devuelve 200 OK con la base de conocimiento actualizada.

Eliminar archivo(s)​

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

Elimina uno o varios archivos por ID. A pesar de la ruta en singular, el cuerpo toma un array.

Cuerpo de la petición

CampoTipoObligatorioDescripción
file_idsstring[]SíArray no vacío de ID de archivos a eliminar.
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"] }'

Devuelve 200 OK.

Asignar agentes​

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

Establece (reemplaza) la lista completa de agentes que usan esta base de conocimiento.

Cuerpo de la petición

CampoTipoObligatorioDescripción
agent_idsstring[]SíID de agentes que deben usar esta base de conocimiento.
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"] }'

Devuelve 200 OK.


Números de teléfono

Lista tus números, busca números disponibles para comprar, adquiere uno, importa números desde una cuenta de Twilio conectada o conecta un número a un trunk SIP.

Comprar números en el panel

La compra de números en el panel va más allá de lo que exponen estos endpoints. Hay números instantáneos y sin papeleo disponibles en Austria, Alemania, Suiza, EE. UU. y Canadá; cualquier otro país usa un flujo guiado de autoservicio en el que envías tus propios documentos regulatorios (y puedes guardarlos como borrador para retomarlos más tarde). La pantalla de compra ofrece los tipos local, móvil, nacional y gratuito — además de números avanzados (+€2/mes) y números de llamada de WhatsApp. El BYO SIP es neutral respecto al proveedor (sipgate, Placetel, TENIOS, easybell, Zadarma, Telnyx, trunks personalizados — no solo importación de Twilio). Consulta Números de teléfono para el flujo completo.

Listar números de teléfono​

GET /v1/phone-number/list

Parámetros de consulta — todos opcionales: inbound_agent_id, outbound_agent_id, customer_id, workspace_id (y user_id, que por defecto eres tú).

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

Respuesta de ejemplo — 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"
}
]

Números disponibles​

GET /v1/phone-number/available

Lista los números disponibles para comprar en un país.

Parámetros de consulta

NombreTipoObligatorioDescripción
country_codestringNoCódigo de país ISO (por defecto US), p. ej. DE, AT, CH.
area_codestringNoFiltro numérico de prefijo de zona.
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"

Respuesta de ejemplo — 200 OK

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

Comprar un número​

POST /v1/phone-number/buy

Compra un número concreto. Parámetros de consulta opcionales customer_id, workspace_id.

Cuerpo de la petición

CampoTipoObligatorioDescripción
phone_numberstringSíEl número a comprar (E.164).
country_codestringSíPaís del número (p. ej. 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" }'

Respuesta de ejemplo — 200 OK

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

Importar desde Twilio​

POST /v1/phone-number/import-twilio

Importa números desde una cuenta de Twilio conectada. Parámetros de consulta opcionales customer_id, workspace_id.

Cuerpo de la petición

CampoTipoObligatorioDescripción
sidstringSíAccount SID de Twilio (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" }'

Respuesta de ejemplo — 200 OK (el registro del número de teléfono importado).

Conectar a SIP​

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

Conecta un número existente a un trunk SIP.

Cuerpo de la petición

CampoTipoObligatorioDescripción
phone_numberstringSíEl número a conectar (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" }'

Devuelve 200 OK (cuerpo vacío).


Voces

Listar voces​

GET /v1/voice/list

Lista las voces disponibles. Filtra por idioma o proveedor e incluye los clones privados de un cliente.

Parámetros de consulta

NombreTipoObligatorioDescripción
languagestringNoFiltra por idioma, p. ej. ?language=de.
providerstringNo11-Labs, openai, qwen o azure.
customer_idstringNoIncluye también los clones de voz privados de este cliente.
curl -G "https://api.hanc.ai/v1/voice/list" \
-H "x-api-key: YOUR_API_KEY" \
--data-urlencode "language=de"

Respuesta de ejemplo — 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"
}
]

Suscripción

Detalles de la suscripción​

GET /v1/subscription

Devuelve tu suscripción actual, incluidos los saldos de créditos y los ajustes de recarga.

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

Respuesta de ejemplo — 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
}

Devuelve 404 si no existe ningún registro de suscripción.

Configurar recarga automática​

PATCH /v1/subscription/auto-top-up

Habilita o deshabilita la recarga automática de créditos.

Cuerpo de la petición

CampoTipoObligatorioDescripción
enabledbooleanSíActiva o desactiva la recarga automática.
amountnumberNoImporte con el que recargar (20–1000). Se establece al habilitar.
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 }'

Devuelve 200 OK con la suscripción actualizada.

Establecer importe de recarga​

PATCH /v1/subscription/top-up-amount

Actualiza el importe de recarga configurado.

Cuerpo de la petición

CampoTipoObligatorioDescripción
top_up_amountnumberSíNuevo importe (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 }'

Devuelve 200 OK con la suscripción actualizada.


Clientes

Gestiona los clientes de tu agencia. Estos endpoints requieren que tu cuenta pertenezca a una agencia.

Listar clientes​

GET /v1/customer/list

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

Respuesta de ejemplo — 200 OK

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

Detalles del cliente​

GET /v1/customer/:id

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

Devuelve el objeto del cliente, o 404 si no se encuentra.

Crear un cliente​

POST /v1/customer

Cuerpo de la petición

CampoTipoObligatorioDescripción
emailstringSíCorreo de inicio de sesión del cliente.
initial_passwordstringSíContraseña inicial (8–128 caracteres).
namestringSíNombre de la cuenta/empresa.
user_full_namestringSíNombre completo del usuario cliente.
visibilityobjectNoIndicadores de visibilidad por sección.
opt_out_promotionsbooleanNoExcluye al cliente de la mensajería promocional.
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"
}'

Devuelve 201 Created con el nuevo cliente. Devuelve 400 si el correo ya existe o tu cuenta no forma parte de una agencia.

Actualizar un cliente​

PATCH /v1/customer/:id

Cuerpo de la petición — todos opcionales: 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" }'

Devuelve 200 OK con el cliente actualizado.

Eliminar un cliente​

DELETE /v1/customer/:id

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

Respuesta de ejemplo

{ "message": "Customer deleted successfully" }

Espacios de trabajo

Agrupa agentes, números y bases de conocimiento en espacios de trabajo y gestiona sus miembros.

Listar espacios de trabajo​

GET /v1/workspaces/list

Parámetro de consulta opcional customer_id.

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

Respuesta de ejemplo — 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" }
]
}
]

Crear un espacio de trabajo​

POST /v1/workspaces

Cuerpo de la petición

CampoTipoObligatorioDescripción
namestringSíNombre del espacio de trabajo (2–100 caracteres).
descriptionstringNoDescripción (0–500 caracteres).
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." }'

Devuelve 201 Created con el espacio de trabajo.

Detalles del espacio de trabajo​

GET /v1/workspaces/:id

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

Devuelve el objeto del espacio de trabajo.

Actualizar un espacio de trabajo​

PATCH /v1/workspaces/:id

Cuerpo de la petición — name (2–100) y/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" }'

Devuelve 200 OK con el espacio de trabajo actualizado.

Eliminar un espacio de trabajo​

DELETE /v1/workspaces/:id

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

Respuesta de ejemplo

{ "message": "Workspace deleted successfully" }

Invitar a un miembro​

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

Cuerpo de la petición

CampoTipoObligatorioDescripción
emailstringSíCorreo del usuario a invitar.
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" }'

Devuelve 201 Created con el espacio de trabajo (el nuevo miembro aparece en members).

Eliminar a un miembro​

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

Cuerpo de la petición

CampoTipoObligatorioDescripción
emailstringSíCorreo del miembro a eliminar.
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" }'

Devuelve 200 OK con el espacio de trabajo actualizado.


Qué no está disponible a través de la API​

Algunas operaciones solo están disponibles a través del panel:

FunciónMotivo
Gestión de claves de APISeguridad — las claves no pueden crear otras claves
Configuración de números de teléfonoRequiere configuración interactiva
Integración con Google CalendarRequiere autorización interactiva
Facturación y pagosSe gestionan a través del panel

¿Necesitas ayuda?​

Contacta con nuestro equipo de soporte en support@hanc.ai para preguntas relacionadas con la API.