Ir al contenido

Referencia de API

Asistentes y base de conocimiento

Endpoints para tus asistentes de chat y su base de conocimiento. Todos requieren autenticación (API key o sesión) y cuelgan de /workspaces/:workspaceId. Para los agentes de voz y las llamadas, ver Agentes de voz y llamadas.

MétodoRutaDescripción
GET/agentsListar asistentes
POST/agentsCrear asistente
GET/agents/:idObtener asistente
PATCH/agents/:idActualizar
DELETE/agents/:idEliminar
POST/agents/:id/duplicateDuplicar (copia toda la configuración, incluido handoff y follow-ups)
POST/agents/:id/widget-logoSubir logo del widget (multipart/form-data, campo logo, imagen, máx. 2 MB)
POST/agents/:id/website/importRastrear una URL y usarla como documento de conocimiento del asistente
CampoTipoRequeridoDescripción
namestring (2-60)Nombre del asistente.
systemPromptstring (10-20 000)Instrucciones del asistente.
descriptionstring (máx. 2000)NoDescripción interna.
avatarUrlstringNoURL del avatar.
welcomeMessagestring (máx. 1000)NoMensaje de saludo inicial.
modelgemini-2.5-flash | gpt-4oNoModelo de IA. Por defecto gemini-2.5-flash.
temperaturenúmero (0-2)NoCreatividad de las respuestas. Por defecto 0.7.
maxTokensentero (1-8000)NoTope de tokens de la respuesta. Por defecto 600.
autoCaptureLeadInfobooleanNoCaptura automática de datos del contacto. Por defecto true.
channelsarray de WHATSAPP | WEB_WIDGETNoCanales donde responde. Por defecto ["WEB_WIDGET"].
toolsarray (máx. 50)NoHerramientas del asistente — ver herramientas de asistentes.
knowledgeDocIdsarray de string (máx. 200)NoDocumentos de conocimiento vinculados.
contextIdstringNoID de un contexto de empresa existente en el workspace.
widgetColor / widgetBgColorstring (hex)NoColores del widget. Por defecto #2563eb / #0d1424.
widgetPositionleft | rightNoPosición del widget. Por defecto right.
widgetBotName / widgetGreeting / widgetLogoUrlstringNoPersonalización del widget.
POST /workspaces/:workspaceId/agents
PATCH /workspaces/:workspaceId/agents/:id

Acepta los mismos campos que crear, todos opcionales — es un merge parcial. Además admite:

CampoTipoDescripción
isActivebooleanActiva o desactiva el asistente.
expectedVersionenteroBloqueo optimista: si no coincide con la versión actual del asistente, rechaza la edición (evita pisar un cambio concurrente). Se omite, no se verifica.
versionLabelstring (máx. 200)Etiqueta para la versión del historial de prompt que se autoguarda si systemPrompt cambió.
POST /workspaces/:workspaceId/agents/:id/duplicate

Crea una copia completa del asistente (configuración, prompt por secciones, contexto de empresa, handoff y secuencias de follow-up incluidos), inactiva y con el nombre original + ” (copia)”.

Las sesiones son las conversaciones del Playground (chat de prueba del panel). Las ejecuciones de tools se leen de esas mismas sesiones — cada turno del chat guarda ahí las tools que el asistente llamó, no solo las de tipo Flow.

MétodoRutaDescripción
GET/agents/:id/sessionsListar sesiones de prueba
GET/agents/:id/sessions/:sessionIdObtener una sesión (mensajes completos)
DELETE/agents/:id/sessions/:sessionIdLimpiar una sesión
GET/agents/:id/tool-executionsHistorial de ejecuciones de tools (paginado por cursor)
GET /workspaces/:workspaceId/agents/:id/tool-executions
ParámetroTipoDescripción
limitnúmeroCantidad máxima de ejecuciones a devolver. Por defecto 50.
cursorstringId de la última sesión de la página anterior, para paginar hacia atrás.

Cada vez que se guarda un cambio en systemPrompt, model, temperature o maxTokens se puede conservar como una versión con historial. Sirve para comparar, etiquetar y volver atrás.

MétodoRutaDescripción
GET/agents/:id/prompt-versionsListar versiones (paginado)
POST/agents/:id/prompt-versionsGuardar la configuración actual como una versión nueva
GET/agents/:id/prompt-versions/:versionIdObtener una versión (snapshot completo)
PATCH/agents/:id/prompt-versions/:versionId/tagEtiquetar (o quitar la etiqueta de) una versión
POST/agents/:id/prompt-versions/:versionId/rollbackRestaurar el asistente a esa versión
DELETE/agents/:id/prompt-versions/:versionIdEliminar una versión
POST /workspaces/:workspaceId/agents/:id/prompt-versions
CampoTipoRequeridoDescripción
systemPromptstringInstrucciones a guardar en esta versión.
modelstringModelo de esta versión.
temperaturenúmeroTemperatura de esta versión.
maxTokensnúmeroTope de tokens de esta versión.
labelstringNoEtiqueta legible (ej. “Antes de la campaña de julio”).
tagstringNoTag corto para identificarla en el selector.
promptSections / welcomeMessageany / stringNoSe guardan en el snapshot si aplican.
POST /workspaces/:workspaceId/agents/:id/prompt-versions/:versionId/rollback

Restaura los campos escalares del asistente (nombre, prompt, modelo, temperatura, tools, canales, personalización del widget, etc.) al snapshot de esa versión. No restaura la configuración de handoff ni las secuencias de follow-up — esas son relaciones aparte y quedan como están, para no arriesgar jobs de seguimiento ya programados.

MétodoRutaDescripción
GET/knowledgeListar documentos (search, status, category, page, limit)
GET/knowledge/statsEstadísticas (totalDocs, totalChunks, byStatus)
GET/knowledge/:idObtener documento (con contenido completo)
POST/knowledgeIndexar texto directo
POST/knowledge/uploadSubir archivo (.pdf .txt .docx .csv .xlsx .xls, máx. 10 MB)
PATCH/knowledge/:idEditar (reindexa si cambia content)
POST/knowledge/:id/retryReintentar un documento en estado ERROR
POST/knowledge/:id/similarity/dismissDescartar el aviso de “documento muy similar a otro”
POST/knowledge/:id/similarity/replaceEliminar el documento anterior similar y quedarte con este
DELETE/knowledge/:idEliminar documento

status es uno de PENDING, PROCESSING, READY, ERROR — el documento empieza en PENDING/PROCESSING y pasa a READY cuando termina de indexarse, o ERROR si falló (con el motivo en errorMsg). Para que un asistente lo use, agrégalo a su knowledgeDocIds con un PATCH a /agents/:id. Ver gestión de la base de conocimiento.

POST /workspaces/:workspaceId/knowledge
CampoTipoRequeridoDescripción
titlestring (1-300)Título del documento.
contentstring (1-500 000)Contenido a indexar.
categorystring (máx. 100)NoCategoría libre.
tagsarray de string (máx. 20, 50 c/u)NoEtiquetas.
POST /workspaces/:workspaceId/knowledge/upload

Petición multipart/form-data: el campo del archivo se llama file. El backend extrae el texto del PDF/DOCX/CSV/XLSX/TXT y lo indexa igual que indexar texto. Si no logra extraer texto (ej. un PDF escaneado sin OCR), responde 400.

CampoTipoRequeridoDescripción
filearchivo.pdf, .txt, .docx, .csv, .xlsx o .xls. Máx. 10 MB.
titlestringNoTítulo del documento. Por defecto, el nombre del archivo.
categorystringNoCategoría libre.
PATCH /workspaces/:workspaceId/knowledge/:id
CampoTipoRequeridoDescripción
titlestring (1-300)NoNuevo título.
contentstring (1-500 000)NoNuevo contenido — si cambia, se reindexa.
categorystring (máx. 100)NoNueva categoría.
tagsarray de stringNoNuevas etiquetas.
enabledbooleanNoActiva/desactiva el documento para la búsqueda de TODOS los asistentes que lo usan, sin borrar sus chunks ya indexados.

El único endpoint de chat pensado para integraciones externas es el del widget web. No usa tu API key: se autentica con el widgetToken público del workspace (el mismo que va incrustado en el snippet que instalas en tu sitio — ver instalar el widget), pensado para vivir en HTML público. No requiere Authorization.

MétodoRutaDescripción
GET/widget/config?token=Datos públicos del workspace (nombre, logo, idioma)
GET/widget/appearance?token=&agentId=Apariencia en vivo del widget de un asistente
POST/widget/chatEnviar un mensaje al asistente
GET/widget/history?token=&conversationId=Historial de una conversación
POST/widget/closeMarcar la conversación como cerrada (al salir del sitio)
POST /widget/chat
CampoTipoRequeridoDescripción
tokenstringEl widgetToken público del workspace.
messagestringMensaje del visitante.
agentIdstringNoAsistente que debe responder (debe tener el canal Web widget activo).
conversationIdstringNoPara continuar una conversación existente; se omite en el primer mensaje.
visitorIdstringNoIdentificador del visitante, para reconocerlo en mensajes futuros.
visitorName / visitorEmailstringNoDatos del visitante, si ya los tienes.