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 ejemplo200 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
idstringID de la llamada.

Petición de ejemplo

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

Respuesta de ejemplo200 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_fromstringFecha de inicio (YYYY-MM-DD).
date_tostringFecha 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 ejemplo200 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 ejemplo200 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_idstringAgente sobre el que informar.
date_fromstringFecha de inicio.
date_tostringFecha 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 ejemplo200 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_fromstringFecha de inicio.
date_tostringFecha 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 ejemplo200 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_fromstringFecha de inicio.
date_tostringFecha 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_idstringAgente que realizará la llamada.
from_numberstringID de llamante en formato E.164 (p. ej. +1234567890).
to_numberstringNú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 ejemplo201 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_idstringAgente 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 ejemplo201 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 ejemplo200 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
idstringID 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_namestringNombre visible.
llm_idstringID 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 ejemplo201 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 rutaid (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 ejemplo200 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 ejemplo204 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 rutaid (ID del agente).

Parámetros de consulta

NombreTipoObligatorioDescripción
date_fromstringFecha de inicio (YYYY-MM-DD).
date_tostringFecha 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 ejemplo200 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 ejemplo200 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_typeenumsend_email, send_sms, send_whatsapp o api_call.
settingsobjectConfiguració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 ejemplo201 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_typeenumUno de los tipos de herramienta admitidos anteriores.
settingsobjectConfiguració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 ejemplo201 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 ejemplo200 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
filefileEl primer documento (p. ej. un PDF).
namestringNombre de la base de conocimiento (1–100 caracteres).
descriptionstringDescripció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 ejemplo200 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[]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[]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 ejemplo200 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 ejemplo200 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_numberstringEl número a comprar (E.164).
country_codestringPaí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 ejemplo200 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
sidstringAccount 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 ejemplo200 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_numberstringEl 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 ejemplo200 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 ejemplo200 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
enabledbooleanActiva 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_amountnumberNuevo 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 ejemplo200 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
emailstringCorreo de inicio de sesión del cliente.
initial_passwordstringContraseña inicial (8–128 caracteres).
namestringNombre de la cuenta/empresa.
user_full_namestringNombre 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 ejemplo200 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
namestringNombre 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ónname (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
emailstringCorreo 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
emailstringCorreo 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.