Conecta tu CRM o tu propia aplicación con tu espacio de trabajo de Crang mediante la API REST, recibe eventos como webhooks o deja que un asistente de IA trabaje con él por MCP. Todo está protegido con una clave de API que creas en Ajustes, Integraciones.
Resumen
Tu espacio de trabajo tiene tres vías de entrada: una API REST para leer y cambiar datos, webhooks que te avisan cuando algo ocurre y un servidor MCP para asistentes de IA. Cada una pertenece a un único espacio de trabajo: lo decide la clave de API.
URL base de la API REST
https://api.crang.ai/v1
URL del servidor MCP
https://mcp.crang.ai/mcp
Versiones
La versión va en la ruta (/v1). Dentro de una versión se añaden rutas nuevas y campos nuevos en las respuestas, así que ignora los campos que no conozcas. Un cambio incompatible sale como versión nueva y la anterior sigue funcionando durante un periodo de aviso.
Autenticación
Crea una clave de API en Ajustes, Integraciones, y envíala en cada solicitud como Authorization: Bearer <clave>. La clave se muestra una sola vez: guárdala como una contraseña.
Una clave pertenece a un espacio de trabajo y actúa con el rol de la persona que la creó. El espacio de trabajo nunca forma parte de una solicitud: no hay un id de espacio de trabajo que enviar ni que se pueda cambiar.
Cada ruta necesita un permiso en la clave. Sin él, la API responde 403. Una clave ausente, desconocida, revocada o caducada responde 401.
Eliges los permisos al crear una clave. Una clave nunca recibe más de lo que permite el rol de quien la creó.
Permiso
Permite
calls:read
Leer llamadas, transcripciones y resultados
contacts:read
Leer listas de contactos y contactos
contacts:write
Importar contactos y añadir números a la lista de no llamar
campaigns:read
Leer campañas y su estado
campaigns:write
Crear y editar campañas
campaigns:run
Iniciar, pausar, reanudar y cancelar campañas
agents:read
Listar agentes y leer sus ajustes
agents:write
Editar el borrador de un agente. Nada se publica
agents:publish
Publicar un agente. Los cambios llegan a las llamadas reales
knowledge:read
Listar los documentos de la base de conocimiento
knowledge:write
Añadir documentos a la base de conocimiento. Se suman a todos los agentes, también a las versiones publicadas, así que el asistente también necesita agents:publish
numbers:read
Listar los números de teléfono y el agente que atiende cada uno
analytics:read
Leer la analítica y los resultados de los objetivos
usage:read
Leer los minutos restantes y el consumo
mcp
Conectar un asistente de IA al servidor MCP
Errores
Los errores son JSON, { "error": { "code": "...", "details": ... } }. Decide según code, nunca según el texto HTTP.
Estado
Código
Significado
400
common.validation
La solicitud no es válida. details enumera los problemas.
401
api_keys.invalid
La clave falta, es desconocida, está revocada o ha caducado.
402
tenant.subscription_suspended
La suscripción del espacio de trabajo está suspendida.
403
api_keys.scope_missing
A la clave le falta el permiso que necesita la ruta (details.scope), o la integración está desactivada para el espacio de trabajo.
404
common.not_found
No hay nada con ese id en tu espacio de trabajo.
429
common.rate_limited
Demasiadas solicitudes. Espera los segundos de la cabecera Retry-After.
Límites de uso
Por defecto, 120 solicitudes por minuto por clave y 600 por minuto por espacio de trabajo entre todas sus claves, compartidas por la API REST y el servidor MCP. Superado el límite, la API responde 429 con una cabecera Retry-After (segundos).
API REST
Las solicitudes y respuestas son JSON salvo que una ruta indique otra cosa. Los campos obligatorios deben enviarse. En las respuestas, ignora los campos que no conozcas.
Suprimir a una persona (solicitud de supresión del RGPD)
Elimina todos los contactos con el número de este contacto, en todas las listas, y borra el número, la transcripción, el resumen, los datos capturados y el análisis en texto libre de sus llamadas (el resultado, los minutos y los objetivos siguen en las cifras). Una entrada de no llamar para el número se conserva como registro de exclusión sin el número, así que el número sigue sin llamarse. Solo para una clave creada por el propietario del espacio de trabajo (si no, 403). Responde 409 contacts.erase_call_recent mientras hay una llamada en curso con la persona o terminó hace menos de 10 minutos.
Permiso necesariocontacts:write
Parámetros
Campo
Tipo
Descripción
idobligatorio
string (uuid) · ruta
Respuesta 200
Campo
Tipo
Descripción
contactsobligatorio
integer
callsobligatorio
integer
Solicitud de ejemplo
curl -X POST "https://api.crang.ai/v1/contacts/<id>/erase" \
-H "Authorization: Bearer $CRANG_API_KEY"
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
Los cambios solo afectan al borrador; quien llama sigue hablando con la versión publicada hasta que se publique. La excepción es inboundPersonalization (desactivado por defecto), que se aplica desde la siguiente llamada entrante: si está activado, quien llama desde un número que su operador verificó por completo recibe las variables de llamada de su contacto. Envía la revision de la última lectura (409 si está desactualizada).
Un webhook es una dirección HTTPS tuya. Crang le envía un POST cuando ocurre algo en el espacio de trabajo. Añade endpoints en Ajustes, Integraciones, elige sus eventos y copia el secreto de firma.
La solicitud
Todos los eventos tienen el mismo cuerpo, enviado como JSON con las cabeceras Content-Type, User-Agent: Crang-Webhooks/1.0 y Crang-Signature. Solo cambian los campos de data.
Campo
Tipo
Descripción
idobligatorio
string
Id del evento. Es el mismo en cada reintento y reenvío: descarta duplicados por él.
typeobligatorio
string
El tipo de evento.
createdAtobligatorio
string (date-time)
Cuándo se registró el evento.
dataobligatorio
object
Los campos del evento, indicados más abajo.
Verifica la firma
Crang-Signature es t={segundos unix},v1={hex}, donde v1 es el HMAC-SHA256 de {t}.{cuerpo sin procesar} con el secreto de firma de tu endpoint (whsec_...). Durante una rotación del secreto hay dos valores v1 durante 24 horas: acepta cualquiera que coincida.
Calcúlala sobre el cuerpo sin procesar, compara en tiempo constante y rechaza una t de más de 5 minutos.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verify(rawBody, header, secret) {
const parts = header.split(",").map((p) => p.split("="));
const t = parts.find(([k]) => k === "t")?.[1];
if (!t || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
return parts
.filter(([k]) => k === "v1")
.some(([, v]) => v?.length === expected.length && timingSafeEqual(Buffer.from(v), Buffer.from(expected)));
}
Entrega y reintentos
Responde con cualquier 2xx en 10 segundos; solo se lee el estado y no se siguen redirecciones. Si no, Crang reintenta 6 veces, tras 1 min, 5 min, 30 min, 2 h, 6 h, 15 h, unas 24 horas en total, y luego marca la entrega como fallida. Un endpoint cuyas entregas siguen fallando se desactiva y se avisa por correo a los propietarios. La entrega es al menos una vez.
Mientras el espacio de trabajo está suspendido no se entrega nada, salvo el único evento tenant.suspended.
Ajustes, Integraciones muestra las entregas recientes con su estado, intentos y carga útil. Puedes reenviar una o enviar un evento de prueba (webhook.test) a un solo endpoint.
Eventos
Elige los eventos que recibe cada endpoint. webhook.test solo llega al endpoint que pruebas.
call.completed
Una llamada fue contestada o llegó al buzón de voz, y su resultado está guardado.
El servidor MCP permite que un asistente de IA trabaje con tu espacio de trabajo según lo que permita la clave de API, y nada más. Cada acción queda en el registro de auditoría. Es HTTP con streaming (Streamable HTTP), sin sesiones.
Autenticación
Envía la clave como Authorization: Bearer <clave>. La clave necesita el permiso mcp más los permisos de las herramientas que quieras usar. El asistente solo ve las herramientas que su clave permite; cualquier otra se responde como no encontrada. Las solicitudes cuentan para los mismos límites de uso que la API REST.
Conecta un asistente de IA
Añade el servidor a la configuración MCP del asistente y sustituye YOUR_API_KEY por tu clave. Las ediciones de un agente quedan en el borrador; nada sale en vivo hasta publish_agent.
41 herramientas. Cada una necesita todos los permisos indicados.
Llamadas
list_calls
Lectura
Buscar llamadas
Solo lectura. Lista las llamadas, de la más reciente a la más antigua, con resultado, objetivo, agente, campaña, contacto y duración. Filtra por dirección, agente, campaña, contacto, número de teléfono, resultado, objetivo (success), rango de tiempo (from/to, fecha y hora ISO), duración en segundos, transferencias, llamadas cortadas (cutOff) o una búsqueda por teléfono o nombre (q). Pagina con cursor.
Verdadero cuando una llamada atendida terminó sin que el agente la cerrara ni la derivara: la otra parte colgó o se cortó la línea.
get_call
Lectura
Obtener una llamada
Solo lectura. Una llamada con su resumen, la transcripción completa (turnos del interlocutor y del agente), los datos capturados y los resultados de los objetivos.
Permisoscalls:read
Argumentos
Campo
Tipo
Descripción
callIdobligatorio
string (uuid)
Contactos
list_contact_lists
Lectura
Listar listas de contactos
Solo lectura. Listas de contactos con su estado (importando, lista, fallida), número de contactos e informe de importación.
Permisoscontacts:read
Argumentos
Sin argumentos.
get_contact_list
Lectura
Obtener una lista de contactos
Solo lectura. Una lista de contactos con su estado e informe de importación (filas importadas, no válidas, duplicadas y de no llamar). Úsala para seguir una importación.
Permisoscontacts:read
Argumentos
Campo
Tipo
Descripción
listIdobligatorio
string (uuid)
list_contacts
Lectura
Listar contactos
Solo lectura. Los contactos de una lista, del más reciente al más antiguo. Pagina con cursor.
Permisoscontacts:read
Argumentos
Campo
Tipo
Descripción
listIdobligatorio
string (uuid)
cursor
string (uuid)
nextCursor de la página anterior
limit
integer = 50
search_do_not_call
Lectura
Buscar en la lista de no llamar
Solo lectura. Números a los que el espacio de trabajo nunca llama, del más reciente al más antiguo; query busca por dígitos del teléfono.
Permisoscontacts:read
Argumentos
Campo
Tipo
Descripción
query
string
cursor
string (uuid)
nextCursor de la página anterior
limit
integer = 50
import_contacts
Cambia datos
Importar contactos
Cambia datos. Crea una lista de contactos nueva a partir de filas (objetos de nombre de columna a valor), con las mismas comprobaciones que una importación de CSV en la app: los teléfonos se normalizan, las filas no válidas y duplicadas se omiten y los números de no llamar se suprimen. mapping indica la columna de cada campo de contacto y de cada variable de llamada; las demás columnas se ignoran. Como máximo 5.000 filas y 100.000 valores (filas × columnas asignadas) por llamada, y 30 variables de llamada: para más filas, vuelve a llamar (cada llamada crea su propia lista). Solo para personas a las que el espacio de trabajo puede llamar legalmente (lawfulBasis: true registra esa confirmación). Devuelve la lista en importing; llama a get_contact_list para ver el informe.
Permisoscontacts:write
Argumentos
Campo
Tipo
Descripción
nameobligatorio
string
rowsobligatorio
object<string, string | number | boolean | null>[]
mappingobligatorio
object
mapping.phoneobligatorio
string
mapping.name
string
mapping.language
string
mapping.timezone
string
mapping.externalId
string
mapping.variables
object<string, string> = {}
lawfulBasisobligatorio
true
add_to_do_not_call
Cambia datos
Añadir números a no llamar
Cambia datos. Añade números de teléfono a la lista de no llamar; las campañas los omiten desde ese momento. Un solo número no válido rechaza toda la solicitud (details.invalid).
Permisoscontacts:write
Argumentos
Campo
Tipo
Descripción
phonesobligatorio
string[]
note
string
Campañas
list_campaigns
Lectura
Listar campañas
Solo lectura. Campañas salientes con estado, progreso por estado de contacto y estadísticas de llamadas.
Permisoscampaigns:read
Argumentos
Sin argumentos.
get_campaign
Lectura
Obtener el estado de una campaña
Solo lectura. Una campaña: estado, motivo de pausa, ajustes, progreso y llamadas de las últimas 24 horas.
Permisoscampaigns:read
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
create_campaign
Cambia datos
Crear una campaña
Cambia datos. Crea una campaña saliente en borrador (no se marca nada hasta start_campaign). Los ajustes por defecto son el horario laboral entre semana en la zona horaria del espacio de trabajo.
Permisoscampaigns:write
Argumentos
Campo
Tipo
Descripción
nameobligatorio
string
agentIdobligatorio
string (uuid)
Un agente con una versión publicada
listIdsobligatorio
string (uuid)[]
Listas de contactos a las que llamar
phoneNumberIdsobligatorio
string (uuid)[]
Números del espacio de trabajo desde los que llamar
startsAt
string (date-time) | null
Cuándo puede empezar la marcación tras start_campaign; null u omitido: de inmediato
settingsobligatorio
object
Ajustes de marcación; lo que se omite conserva su valor actual o por defecto
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
update_campaign
Cambia datos
Editar una campaña
Cambia datos. Edita una campaña en borrador, programada o en pausa; los campos omitidos conservan su valor. Las campañas programadas y en pausa conservan su agente y sus listas.
Permisoscampaigns:write
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
name
string
agentId
string (uuid)
Un agente con una versión publicada
listIds
string (uuid)[]
Listas de contactos a las que llamar
phoneNumberIds
string (uuid)[]
Números del espacio de trabajo desde los que llamar
startsAt
string (date-time) | null
Cuándo puede empezar la marcación tras start_campaign; null u omitido: de inmediato
settings
object
Ajustes de marcación; lo que se omite conserva su valor actual o por defecto
Ajustes de protección propios: pausa automática, límite de minutos, inicio lento y valores de pausa
settings.protection.autoPause
boolean
Pausar la campaña automáticamente cuando sus últimas llamadas van mal. Por defecto false: la campaña solo muestra sus métricas. El límite de minutos se aplica en ambos casos.
settings.protection.minuteLimit
integer | null
Máximo de minutos que puede usar esta campaña (descontados más los de llamadas en curso); null u omitido: sin límite
settings.protection.warmup
boolean
Inicio lento: las primeras llamadas se hacen de pocas en pocas. Por defecto false.
settings.protection.stops
object<string, integer | null>
Por indicador, el porcentaje de las últimas llamadas terminadas en el que se pausa la campaña (answer_rate: se pausa por debajo de él); null desactiva esa pausa. technical_failures está entre 5 y 60 y no puede ser null. Omitido: el valor predeterminado del espacio de trabajo.
start_campaign
Se publica
Iniciar una campaña
Cambia datos. Inicia una campaña en borrador: salen llamadas reales (ahora, o en startsAt) y consumen minutos. Requiere un agente publicado, un número de teléfono y contactos.
Permisoscampaigns:run
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
pause_campaign
Cambia datos
Pausar una campaña
Cambia datos. Pausa una campaña en curso o programada; las llamadas en curso terminan.
Permisoscampaigns:run
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
resume_campaign
Se publica
Reanudar una campaña
Cambia datos. Reanuda una campaña en pausa: la marcación continúa.
Permisoscampaigns:run
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
cancel_campaign
Cambia datos
Cancelar una campaña
Cambia datos, no se puede deshacer. Cancela una campaña para siempre; no volverá a marcar.
Permisoscampaigns:run
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
duplicate_campaign
Cambia datos
Duplicar una campaña
Cambia datos. Un borrador nuevo con el mismo agente, números y ajustes: las mismas listas (all) o una lista nueva con los contactos aún no alcanzados (not_reached, llamada listName).
Permisoscampaigns:write
Argumentos
Campo
Tipo
Descripción
campaignIdobligatorio
string (uuid)
contactsobligatorio
"all" | "not_reached"
listName
string
Agentes
list_agents
Lectura
Listar agentes
Solo lectura. Agentes con dirección, voz, idiomas, números de teléfono y estado (solo borrador, publicado, cambios sin publicar), más los espacios de agente usados y totales.
Permisosagents:read
Argumentos
Sin argumentos.
get_agent
Lectura
Obtener un agente
Solo lectura. El borrador de un agente: config (datos básicos, reglas con objetivos, flujo), documentos de conocimiento y la revision que necesita cada herramienta de edición. Las llamadas en vivo usan la última versión publicada hasta que se publica el borrador.
Permisosagents:read
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
list_agent_versions
Lectura
Listar versiones de un agente
Solo lectura. Versiones publicadas de un agente, de la más reciente a la más antigua, con quién las publicó y la nota. rollback_agent toma de aquí el id de una versión.
Permisosagents:read
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
list_voices
Lectura
Listar voces
Solo lectura. Voces que puede usar un agente, con idiomas, género y acento; kind es catalog o custom (las voces propias listas de este espacio de trabajo). basics.voiceId acepta un id de aquí.
Permisosagents:read
Argumentos
Sin argumentos.
list_agent_templates
Lectura
Listar plantillas de agente
Solo lectura. Las plantillas desde las que puede empezar un agente nuevo: key, nombre, descripción y dirección. create_agent toma de aquí una clave.
Permisosagents:read
Argumentos
Sin argumentos.
list_custom_voices
Lectura
Listar las voces propias del espacio de trabajo
Solo lectura. Las voces propias del espacio de trabajo con su estado (procesando, lista, fallida, desactivada), los agentes que usan cada una y cuántas más puede tener.
Permisosagents:read
Argumentos
Sin argumentos.
create_agent
Cambia datos
Crear un agente
Cambia datos. Crea un agente nuevo en el espacio de trabajo a partir de una plantilla (list_agent_templates), como borrador: nada está en vivo ni contesta llamadas hasta publish_agent. Usa uno de los espacios de agente libres del espacio de trabajo y se rechaza si no queda ninguno; nunca compra un espacio.
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
nameobligatorio
string
templateKeyobligatorio
string
update_agent_basics
Solo borrador
Editar los datos básicos de un agente
Solo cambia el borrador (las llamadas en vivo no cambian hasta publish_agent). Reemplaza el nombre y/o los basics del agente: voz, expresividad (estabilidad), velocidad, idiomas con su primer mensaje, variables de llamada.
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
name
string
basics
object
basics.voiceIdobligatorio
string (uuid) | null
basics.stabilityobligatorio
number
basics.speedobligatorio
number
basics.languagesobligatorio
object[]
basics.languages[].codeobligatorio
string
basics.languages[].firstMessageobligatorio
string
basics.callVariablesobligatorio
object[]
basics.callVariables[].nameobligatorio
string
basics.callVariables[].exampleobligatorio
string
update_agent_rules
Solo borrador
Editar las reglas de un agente
Solo cambia el borrador. Reemplaza las rules del agente: propósito y tono, qué decir siempre y nunca, transferencias, reglas para terminar la llamada, datos a capturar, objetivos, gestión de llamadas, mensaje de buzón de voz e instrucciones adicionales. Envía el objeto de reglas completo de get_agent con tus cambios.
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
rulesobligatorio
object
rules.purposeobligatorio
string
rules.toneobligatorio
string
rules.alwaysSayobligatorio
string[]
rules.neverSayobligatorio
string[]
rules.transfersobligatorio
object[]
rules.transfers[].toobligatorio
"number"
rules.transfers[].destinationobligatorio
string
rules.transfers[].conditionobligatorio
string
rules.transfers[].transferTypeobligatorio
"conference" | "blind"
rules.transfers[].hoursobligatorio
string
rules.transfers[].outsideHoursobligatorio
string
rules.transfers[].callerMessageobligatorio
string
rules.transfers[].summaryobligatorio
string
rules.transfers[].agentIdobligatorio
string (uuid)
rules.endCallRulesobligatorio
string[]
rules.dataToCaptureobligatorio
object[]
rules.dataToCapture[].nameobligatorio
string
rules.dataToCapture[].typeobligatorio
"string" | "boolean" | "integer" | "number"
rules.dataToCapture[].descriptionobligatorio
string
rules.goalsobligatorio
object[]
rules.goals[].nameobligatorio
string
rules.goals[].descriptionobligatorio
string
rules.goals[].value
object
rules.callHandlingobligatorio
object
rules.callHandling.languageDetectionobligatorio
boolean
rules.callHandling.voicemailDetectionobligatorio
boolean
rules.callHandling.keypadTonesobligatorio
boolean
rules.callHandling.skipTurnobligatorio
boolean
rules.voicemailMessageobligatorio
string
rules.additionalInstructionsobligatorio
string
update_agent_goals
Solo borrador
Editar los objetivos de un agente
Solo cambia el borrador. Reemplaza los objetivos del agente (rules.goals): qué cuenta como resultado de una llamada, cada uno con "se alcanza cuando" y un valor opcional a capturar. Se evalúan después de cada llamada.
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
goalsobligatorio
object[]
goals[].nameobligatorio
string
goals[].descriptionobligatorio
string
goals[].value
object
goals[].value.typeobligatorio
"text" | "number" | "date" | "yes_no"
goals[].value.nameobligatorio
string
goals[].value.unit
string
update_agent_workflow
Solo borrador
Editar el flujo de un agente
Solo cambia el borrador. Reemplaza el workflow del agente (los pasos y los caminos entre ellos). Los problemas del flujo se permiten en el borrador pero impiden publicar.
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
workflowobligatorio
object
workflow.stepsobligatorio
object[]
workflow.steps[].kindobligatorio
"start"
workflow.steps[].idobligatorio
string
workflow.steps[].labelobligatorio
string
workflow.steps[].positionobligatorio
object
workflow.steps[].pathsobligatorio
object[]
workflow.steps[].instructionsobligatorio
string
workflow.steps[].collectobligatorio
string[]
workflow.steps[].documentIdsobligatorio
string (uuid)[]
workflow.steps[].voiceIdobligatorio
string (uuid) | null
workflow.steps[].messagesobligatorio
object<string, string>
workflow.steps[].actionobligatorio
"save_data"
workflow.steps[].fieldobligatorio
string | ""
workflow.steps[].destinationobligatorio
string | ""
workflow.steps[].transferTypeobligatorio
"conference" | "blind"
workflow.steps[].agentIdobligatorio
string (uuid) | null
workflow.steps[].messageobligatorio
string
attach_knowledge_document
Solo borrador
Adjuntar un documento de conocimiento
Solo cambia el borrador. Permite que el agente use un documento de la base de conocimiento (ids de list_knowledge_documents).
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
documentIdobligatorio
string (uuid)
detach_knowledge_document
Solo borrador
Desvincular un documento de conocimiento
Solo cambia el borrador. Una vez publicado, el agente deja de usar uno de sus documentos de la base de conocimiento; el documento sigue en el espacio de trabajo. Los documentos de empresa no se pueden desvincular (elimínalos en Ajustes).
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
documentIdobligatorio
string (uuid)
discard_agent_draft
Solo borrador
Descartar el borrador de un agente
Cambia datos, no se puede deshacer. Elimina todos los cambios sin publicar: el borrador vuelve a ser la versión en vivo.
Permisosagents:write
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
publish_agent
Se publica
Publicar un agente
Sale en vivo. El borrador pasa a ser la siguiente versión y toda llamada real nueva (entrante y de campañas) la usa de inmediato. Requiere una voz, un idioma con primer mensaje y un flujo sin problemas. Confirma antes con el usuario.
Permisosagents:publish
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
revisionobligatorio
integer
La revision del agente según get_agent. Una desactualizada se rechaza: vuelve a leer el agente.
note
string
rollback_agent
Se publica
Revertir un agente
Sale en vivo. Publica una copia de una versión anterior (de list_agent_versions) como la siguiente versión; las llamadas reales la usan de inmediato. El borrador se conserva. Confirma antes con el usuario.
Permisosagents:publish
Argumentos
Campo
Tipo
Descripción
agentIdobligatorio
string (uuid)
versionIdobligatorio
string (uuid)
note
string
assign_phone_number_agent
Se publica
Asignar el agente de un número de teléfono
Sale en vivo. El agente contesta de inmediato las llamadas entrantes de este número (agentId null: nadie contesta). El agente necesita una versión publicada. Confirma antes con el usuario.
Permisosagents:publish
Argumentos
Campo
Tipo
Descripción
phoneNumberIdobligatorio
string (uuid)
agentIdobligatorio
string (uuid) | null
Base de conocimiento
list_knowledge_documents
Lectura
Listar documentos de conocimiento
Solo lectura. La base de conocimiento del espacio de trabajo: documentos con su estado (procesando, lista, fallida) y tamaño.
Permisosknowledge:read
Argumentos
Sin argumentos.
add_knowledge_text
Se publica
Añadir un documento de texto
Cambia datos, también en llamadas en vivo. Añade un documento de texto a la base de conocimiento. Una vez procesado, se une a todos los agentes, incluidas las versiones publicadas.
Permisosknowledge:writeagents:publish
Argumentos
Campo
Tipo
Descripción
nameobligatorio
string
textobligatorio
string
add_knowledge_url
Se publica
Añadir una página web
Cambia datos, también en llamadas en vivo. Añade el contenido de una página web pública (https) a la base de conocimiento. Una vez procesado, se une a todos los agentes, incluidas las versiones publicadas.
Permisosknowledge:writeagents:publish
Argumentos
Campo
Tipo
Descripción
urlobligatorio
string (uri)
Números de teléfono
list_phone_numbers
Lectura
Listar números de teléfono
Solo lectura. Los números de teléfono del espacio de trabajo con el agente que contesta cada uno, las campañas abiertas que lo usan y las llamadas entrantes de los últimos 7 días.
Permisosnumbers:read
Argumentos
Sin argumentos.
Analíticas
get_analytics
Lectura
Obtener analíticas
Solo lectura. Resultados de llamadas de un periodo en la zona horaria del espacio de trabajo: totales (llamadas, tasa de respuesta, objetivos alcanzados, minutos, transferencias, bajas) con el periodo anterior (compare), llamadas a lo largo del tiempo, resultados, duraciones, mejores horas para llamar, resultados por agente, campaña y número, y los valores capturados más frecuentes. custom requiere from y to (días locales). Indica agent para un solo agente.
Solo lectura. Con qué frecuencia se alcanzó cada objetivo en un periodo: totales con la tasa del periodo anterior, por agente, campaña y número, a lo largo del tiempo, y valores capturados. Mismas opciones de periodo que get_analytics; indica agent para un solo agente.