Referencia de API
Otros recursos
Referencia rápida de recursos adicionales de la API. Salvo que se indique lo contrario, todos cuelgan de /workspaces/:workspaceId/ y aceptan JWT o API key.
Miembros e invitaciones
Sección titulada «Miembros e invitaciones»Estos endpoints solo aceptan la sesión del dashboard, no una API key — son administración de la cuenta, no integración (ver qué acepta API key).
| Método | Ruta | Descripción |
|---|---|---|
GET | /members | Listar miembros del workspace |
POST | /members | Invitar a un miembro |
PATCH | /members/:userId/role | Cambiar el rol de un miembro |
DELETE | /members/:userId | Quitar un miembro |
Búsqueda global
Sección titulada «Búsqueda global»Busca en paralelo dentro de varios tipos de entidad a la vez. Cada tipo solo se consulta si el usuario (o la API key) tiene la capability de lectura correspondiente — si no la tiene, ese tipo ni siquiera llega a hacer la query, y la clave aparece en la respuesta con un arreglo vacío.
/workspaces/:workspaceId/search Parámetros de query
Sección titulada «Parámetros de query»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
q | string | Sí | Texto a buscar (1–120 caracteres). |
types | string | No | Lista de tipos separados por coma. Por defecto busca en todos. |
Tipos soportados: contacts, flows, pipelines, agents, voiceAgents, campaigns, emailTemplates, whatsappTemplates, conversations, calendarEvents, knowledgeDocs, callCampaigns, callerIds.
Contexto de la empresa
Sección titulada «Contexto de la empresa»Perfil de la empresa (nombre, descripción, horarios, FAQs) que alimenta el prompt de los asistentes. Un workspace puede tener varios contextos; uno de ellos puede marcarse isDefault.
| Método | Ruta | Descripción |
|---|---|---|
GET | /company-contexts | Listar contextos del workspace |
GET | /company-contexts/default | Obtener el contexto marcado como predeterminado |
GET | /company-contexts/:contextId | Obtener un contexto |
POST | /company-contexts | Crear un contexto |
PUT | /company-contexts/:contextId | Actualizar un contexto |
DELETE | /company-contexts/:contextId | Eliminar un contexto |
POST | /company-contexts/analyze-site | Analizar un sitio web (sin crear ni guardar nada) |
POST | /company-contexts/:contextId/rescrape | Volver a analizar el sitio de un contexto existente |
POST | /company-contexts/:contextId/generate-prompt | Generar el prompt de un asistente a partir del contexto |
Ejemplo — crear un contexto
Sección titulada «Ejemplo — crear un contexto»/workspaces/:workspaceId/company-contexts Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | Nombre/etiqueta del contexto guardado (máx. 200). |
companyName | string | No | Nombre real de la empresa. Si se omite, se rellena con name. |
websiteUrl | string | No | URL del sitio web (máx. 2000). |
description | string | No | Descripción de la empresa (máx. 5000). |
industry | string | No | Industria/rubro (máx. 200). |
services | string[] | No | Lista de servicios (máx. 100 items). |
businessHours | string | No | Horario de atención en texto libre (máx. 1000). |
contactInfo | object | No | Datos de contacto libres (teléfono, dirección, etc.). |
faqs | object[] | No | Preguntas frecuentes: { question, answer } (máx. 100). |
isDefault | boolean | No | Marca este contexto como el predeterminado del workspace. |
autoScrape | boolean | No | Si es true y hay websiteUrl, analiza el sitio al crear. |
Eventos CRM
Sección titulada «Eventos CRM»Suscribe un flow del Flow Studio a eventos del CRM (contacto creado, oportunidad movida de etapa, etc.), como alternativa a configurarlo desde el editor visual.
/workspaces/:workspaceId/crm-events/types Lista los tipos de evento disponibles, con su etiqueta y si admiten condiciones de filtro.
| Método | Ruta | Descripción |
|---|---|---|
GET | /crm-events/types | Listar tipos de evento disponibles |
POST | /crm-events/flows/:flowId/subscribe | Suscribir un flow a un tipo de evento |
DELETE | /crm-events/flows/:flowId/subscribe | Desuscribir un flow (vuelve a trigger manual) |
Ejemplo — suscribir un flow
Sección titulada «Ejemplo — suscribir un flow»/workspaces/:workspaceId/crm-events/flows/:flowId/subscribe Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
eventType | string | Sí | Uno de los tipos listados en /crm-events/types. |
pipelineId | string | Depende | Obligatorio para opportunity.created; opcional (filtra) para el resto de eventos de oportunidad. |
Relacionado
Sección titulada «Relacionado»Secuencias de seguimiento
Sección titulada «Secuencias de seguimiento»Secuencias de mensajes automáticos que se disparan cuando un contacto no responde a un asistente. Cada secuencia tiene una lista ordenada de pasos, con su propio retraso y tipo de contenido.
| Método | Ruta | Descripción |
|---|---|---|
GET | /follow-up/sequences | Listar secuencias (filtro opcional ?agentId=) |
POST | /follow-up/sequences | Crear una secuencia (con pasos opcionales) |
GET | /follow-up/sequences/:id | Obtener una secuencia con sus pasos |
PATCH | /follow-up/sequences/:id | Actualizar una secuencia |
DELETE | /follow-up/sequences/:id | Eliminar una secuencia |
POST | /follow-up/default-sequence | Crear la secuencia por defecto del workspace |
POST | /follow-up/sequences/:id/steps | Agregar un paso a una secuencia |
PATCH | /follow-up/sequences/:id/steps/:stepId | Actualizar un paso |
DELETE | /follow-up/sequences/:id/steps/:stepId | Eliminar un paso |
Ejemplo — crear una secuencia
Sección titulada «Ejemplo — crear una secuencia»/workspaces/:workspaceId/follow-up/sequences Cuerpo de la petición
Sección titulada «Cuerpo de la petición»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | Sí | Nombre de la secuencia (máx. 120). |
agentId | string | No | Asistente al que aplica. Sin valor, aplica a todos. |
isActive | boolean | No | Por defecto true. |
triggerOn | string | No | Condición de disparo. Por defecto NO_RESPONSE. |
maxAttempts | number | No | Tope de intentos (1–20). |
reactivateAgent | boolean | No | Si al responder el contacto se reactiva el asistente. Por defecto true. |
steps | object[] | No | Pasos iniciales — ver tabla debajo. |
Cada paso (steps[] al crear, o el cuerpo de POST .../steps):
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
delayMinutes | number | Sí | Minutos de espera desde el paso anterior (mínimo 1). |
stepType | string | No | TEXT | AI_GENERATED | PROMPT_TEMPLATE | WHATSAPP_TEMPLATE | FLOW. Por defecto TEXT. |
message | string | Depende | Requerido si stepType es TEXT (máx. 4096). |
promptTemplate | string | Depende | Requerido si stepType es PROMPT_TEMPLATE (máx. 4096). |
templateId | string | Depende | Requerido si stepType es WHATSAPP_TEMPLATE; debe pertenecer al workspace. |
flowId | string | Depende | Requerido si stepType es FLOW; debe pertenecer al workspace. |
stepNumber | number | No | Orden del paso. Si se omite, se calcula automáticamente. |
Agentes de voz y llamadas
Sección titulada «Agentes de voz y llamadas»| Método | Ruta | Descripción |
|---|---|---|
GET | /voice-agents | Listar agentes de voz |
POST | /voice-agents | Crear agente de voz |
GET | /voice-agents/:id | Obtener |
PATCH | /voice-agents/:id | Actualizar |
GET | /voice-calls | Historial de llamadas |
GET | /voice-calls/:id | Detalle de una llamada |
Ver Agentes de voz.
Uso y créditos
Sección titulada «Uso y créditos»Consumo de créditos del workspace. El saldo (wallet) es siempre el del pool de la cuenta, compartido entre todos sus workspaces — por eso el resumen y el historial de eventos también se agregan a nivel de cuenta cuando aplica, no solo del workspace consultado.
| Método | Ruta | Descripción |
|---|---|---|
GET | /usage/summary | Resumen de consumo del período + estado del wallet |
GET | /usage/wallet | Estado actual del saldo (lectura rápida) |
GET | /usage/events | Historial paginado de eventos de consumo |
Ejemplo — resumen de consumo
Sección titulada «Ejemplo — resumen de consumo»/workspaces/:workspaceId/usage/summary Parámetros de query
Sección titulada «Parámetros de query»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
from | string (ISO date) | No | Inicio del período. Por defecto, el 1º del mes calendario actual. |
to | string (ISO date) | No | Fin del período. Por defecto, el último día del mes calendario actual. |
Ejemplo — historial de eventos
Sección titulada «Ejemplo — historial de eventos»/workspaces/:workspaceId/usage/events Parámetros de query
Sección titulada «Parámetros de query»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
page | number | No | Página (por defecto 1). |
limit | number | No | Tamaño de página, máx. 100 (por defecto 20). |
eventType | string | No | Filtra por tipo (ai_call, voice_minute, whatsapp_message, sms_sent, email_sent, etc.). |
source | string | No | waiify o byok. |
from | string (ISO date) | No | Fecha inicial (createdAt >=). |
to | string (ISO date) | No | Fecha final (createdAt <=). |
Tarifas de créditos (pública)
Sección titulada «Tarifas de créditos (pública)»Tarifas vigentes de consumo de créditos por tipo de evento, app y país. Es la única ruta pública sin autenticación de esta página — ni JWT ni API key: la consume el propio sitio de documentación en tiempo de build para que la tabla de precios nunca quede desactualizada. Nunca expone tarifas negociadas por cuenta, solo las tarifas base activas.
/credit-rates Sin parámetros ni autenticación. Solo lectura, con rate limit de 30 solicitudes por minuto.
Analítica
Sección titulada «Analítica»Métricas agregadas del workspace para dashboards. Todos los endpoints aceptan ?period= con 7d, 30d o 90d (por defecto 30d; cualquier otro valor cae también a 30d).
| Método | Ruta | Descripción |
|---|---|---|
GET | /analytics/overview | KPIs principales: contactos, conversaciones, mensajes, flows, agentes, citas |
GET | /analytics/conversations | Conversaciones por estado/canal, timeline y tiempo de resolución |
GET | /analytics/leads | Funnel de contactos por estado, fuentes y timeline |
GET | /analytics/flows | Ejecuciones de flows, tasa de éxito, top flows y duración |
GET | /analytics/agents | Sesiones de asistentes, tool calls y top agentes |
GET | /analytics/sms | Campañas de SMS: entregas, tasa de error, motivos de fallo |
GET | /analytics/dashboard | overview + conversations + leads + flows + agents en una sola llamada (no incluye sms) |
Ejemplo — overview
Sección titulada «Ejemplo — overview»/workspaces/:workspaceId/analytics/overview Parámetros de query
Sección titulada «Parámetros de query»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
period | string | No | 7d | 30d | 90d. Por defecto 30d. |
Relacionado
Sección titulada «Relacionado»curl -G "https://api.waiify.com/workspaces/WORKSPACE_ID/analytics/overview" \ -H "Authorization: Bearer TU_API_KEY" \ --data-urlencode "period=30d"const res = await fetch( 'https://api.waiify.com/workspaces/WORKSPACE_ID/analytics/overview?period=30d', { headers: { Authorization: 'Bearer TU_API_KEY' } });
const { data } = await res.json();import requests
res = requests.get( "https://api.waiify.com/workspaces/WORKSPACE_ID/analytics/overview", headers={"Authorization": "Bearer TU_API_KEY"}, params={"period": "30d"},)
data = res.json()["data"]{ "success": true, "data": { "period": "30d", "contacts": { "total": 1204, "new": 86, "today": 5 }, "conversations": { "total": 940, "open": 32, "resolved": 780 }, "messages": { "today": 210, "period": 5400 }, "flows": { "active": 12, "executions": 340, "failed": 6, "successRate": 98 }, "agents": { "active": 4, "sessions": 512 }, "appointments": { "upcoming": 18, "period": 64 } }}Databases (Waiify DB)
Sección titulada «Databases (Waiify DB)»Bases de datos propias, con tablas, columnas tipadas y filas — CRUD completo. Ver la referencia dedicada en Bases de datos.
Widget de chat (público, sin API key)
Sección titulada «Widget de chat (público, sin API key)»El chat embebible tiene su propia autenticación por widgetToken — no cuelga de /workspaces/:workspaceId/ ni acepta tu API key. Ver Chat público (widget) para la referencia completa.