Ir al contenido

Referencia de API

Conversaciones y mensajes

Gestiona el inbox: lista conversaciones, cambia su estado, toma el control y envía mensajes. Requieren autenticación (API key o sesión).

MétodoRutaDescripción
GET/workspaces/:workspaceId/conversationsListar (ver filtros abajo)
POST/workspaces/:workspaceId/conversationsCrear/reutilizar una conversación abierta con un contacto
GET/workspaces/:workspaceId/conversations/:conversationIdObtener conversación
PATCH/workspaces/:workspaceId/conversations/:conversationIdActualizar status / assignedTo
POST/workspaces/:workspaceId/conversations/:conversationId/readMarcar como leída
PATCH/workspaces/:workspaceId/conversations/:conversationId/take-controlPausar la IA y tomar el control
PATCH/workspaces/:workspaceId/conversations/:conversationId/release-controlDevolver el control a la IA

Filtros de GET .../conversations (query string, todos opcionales): status (OPEN/WAITING/RESOLVED/CLOSED), channel (WHATSAPP/WEB_WIDGET/PLAYGROUND), assignedTo (id de usuario), agentId (asistente que atiende la conversación), tagId (etiqueta del contacto), search (nombre/teléfono del contacto), isTest ('true' para listar solo conversaciones de prueba; por defecto quedan excluidas), page, limit.

status (ver estados de una conversación):

ValorSignificado
OPENAbierta, la IA responde normalmente.
WAITINGEn cola, esperando que un agente humano la tome.
RESOLVEDResuelta por un agente.
CLOSEDCerrada.

take-control pone aiPaused: true y asigna la conversación al usuario que llama (falla si ya la tomó otro agente distinto). release-control la libera de nuevo hacia la IA.

MétodoRutaDescripción
GET/workspaces/:workspaceId/conversations/:conversationId/messagesListar mensajes (paginado; sin page trae la última página, es decir los más recientes)
POST/workspaces/:workspaceId/conversations/:conversationId/messagesEnviar mensaje
POST/workspaces/:workspaceId/conversations/:conversationId/send-templateEnviar una plantilla de WhatsApp aprobada
POST/workspaces/:workspaceId/conversations/:conversationId/attachmentSubir un adjunto (multipart, campo file, máx. 16 MB) y devolver su URL pública
DELETE/workspaces/:workspaceId/conversations/:conversationId/messages/:messageIdEliminar mensaje
PATCH/workspaces/:workspaceId/conversations/:conversationId/messages/:messageId/feedbackCalificar una respuesta de la IA (helpful / not_helpful / null para quitar la calificación)

GET .../messages acepta page y limit (por defecto 50) en la query string.

POST /workspaces/:workspaceId/conversations/:conversationId/messages
CampoTipoRequeridoDescripción
contentstring (máx. 10 000)Contenido del mensaje.
typestringNoTEXT, IMAGE, AUDIO, DOCUMENT, TEMPLATE (por defecto TEXT).
mediaUrlstring (máx. 2000)NoURL del adjunto, si type no es TEXT.
mediaMimeTypestringNoTipo MIME del adjunto.
filenamestringNoNombre de archivo del adjunto.

Ejemplo — tomar el control de una conversación

Sección titulada «Ejemplo — tomar el control de una conversación»
PATCH /workspaces/:workspaceId/conversations/:conversationId/take-control
ParámetroTipoDescripción
workspaceIdstringIdentificador del workspace.
conversationIdstringConversación a tomar.

Este endpoint no recibe cuerpo: el responsable es el usuario autenticado (vía sesión o el titular de la API key).