Endpoints

Los endpoints de la API v1 agrupados por tema, con el scope que pide cada uno, y qué áreas son solo del panel.

Actualizado:

El contrato legible por máquina está en el repositorio, en packages/openapi/openapi.yaml (OpenAPI 3.1). Esta página resume lo que podés usar con una clave de API. Las áreas marcadas como "solo panel" usan la sesión de una persona del equipo (ver Autenticación).

Agenda: horarios y reservas

MétodoPathScopeDescripción
GET/slotsslots:readHorarios disponibles para un servicio
POST/holdsbookings:writeCrear pre-reserva de 10 minutos
POST/holds/{id}/confirmbookings:writeConfirmar (o pending_payment si pide seña)
DELETE/holds/{id}bookings:writeLiberar pre-reserva
POST/bookingsbookings:writePre-reserva y confirmación en una llamada
GET/bookingsbookings:readListar (from, to, status, resource_id, customer_id)
GET / PATCH/bookings/{id}bookings:read / writeLeer, actualizar notas o datos de ingreso
POST/bookings/{id}/cancel, /reschedule, /check-in, /no-show, /complete, /failbookings:writeCambiar el estado

Trabajo: tareas y acciones

Una reserva es una tarea con etapas. Las tareas sin horario (por ejemplo entregas) viven en la cola de un grupo hasta que alguien las toma. Ver Trabajo y acciones.

MétodoPathScopeDescripción
GET/work-itemsbookings:readConsulta unificada: filtros por view (inbox, today, upcoming), status, stage, unassigned, priority, tag, origin, q, rango de fechas y caja geográfica
PATCH/work-items/{id}bookings:writeCambiar prioridad, etiquetas o vencimiento (con expected_version opcional)
POST/bookings/{id}/actions/{key}bookings:writeEjecutar una acción de la etapa (tomar, soltar, completar, "no estaba"…) con Idempotency-Key
GET/bookings/{id}/stage-historybookings:readHistorial de etapas
GET/bookings/{id}/comments, /timelinebookings:readComentarios y línea de tiempo
GET/bookings/{id}/attachments, /location-eventsbookings:readEvidencia de trabajo
GET/conversations/{id}/work-itemsbookings:readTareas creadas desde una conversación
GET/team/overview, /resources/{id}/statsbookings:readOcupación y estadísticas del equipo

Catálogo y etapas

MétodoPathScope
GET / POST/services, /resources, /resource-groups, /schedulesconfig:read / config:write
GET / PATCH / DELETE/services/{id}, /resources/{id}, /resource-groups/{id}, /schedules/{id}config:read / config:write
POST / DELETE/schedules/{id}/overrides, /schedules/{id}/overrides/{date}config:write
GET/schedule-overridesconfig:read
GET/stage-config, /stage-config/versions, /stage-config/versions/{version}config:read
PUT/stage-configsettings:write
POST/stage-config/versions/{version}/revertsettings:write

Clientes

MétodoPathScopeDescripción
GET/customerscustomers:readListar y buscar (q: nombre, email, empresa, etiqueta o teléfono; phone, tag)
POST/customerscustomers:writeAlta manual. El teléfono es único: si ya existe, 409 customer_exists
GET / PATCH/customers/{id}customers:read / writeLeer o editar (incluye dirección con formatted, lat y lng)
GET/customers/{id}/bookings, /summary, /timeline, /commentscustomers:readHistorial, resumen en vivo, línea de tiempo y comentarios

Un cliente puede tener varias identidades (WhatsApp, Telegram, WebChat) en identities[].

Conversaciones

MétodoPathScope
GET/conversations, /conversations/{id}, /conversations/{id}/messagesmessages:read
POST/conversations/{id}/messagesmessages:write (responde 409 channel_paused si el canal está pausado)
POST/conversations/{id}/mode, /read, /resolvemessages:write

Bot y conocimiento

MétodoPathScope
GET / PUT/botconfig:read / config:write
GET / POST/knowledge, /knowledge/filesconfig:read / config:write
POST/knowledge/searchconfig:read
PATCH / DELETE/knowledge/{id}config:write
GET / POST / PATCH/automations, /automations/{id}config:read / config:write

Webhooks salientes

MétodoPathScope
GET / POST/webhook-endpointswebhooks:manage
GET / PATCH / DELETE/webhook-endpoints/{id}webhooks:manage
POST/webhook-endpoints/{id}/rotate-secret, /ping, /deliveries/{delivery_id}/resendwebhooks:manage
GET/webhook-endpoints/{id}/deliverieswebhooks:manage

Detalle en Webhooks.

Plataforma

MétodoPathScope
GET/mecualquiera

Solo panel (no aceptan claves de API)

ÁreaRutas
Canales y pausas/channels, /channels/whatsapp, /channels/telegram, /channels/service-status, /channels/pauses, /channels/{channel}/pause y /resume; ver Pausas y Estado
Política del bot por canal/bot/channel-policies (ver WebChat)
Fuentes de conocimiento/knowledge/sources (ver Conocimiento)
Flujos/automation-flows (ver Flujos)
IA del proyecto/ai/usage, /ai/pause, /ai/resume, /ai/spam-guard, /ai/notices
Wagy/assistant/*, el asistente de configuración del panel
Equipo y cuenta/team/*, /api-keys, /workspaces, /me/telegram, /me/notification-preferences
WebChat/webchat-site (gestión) y /public/webchat/* (públicos, con la clave publicable del widget)

Ejemplo: slots

GET /v1/slots?service_id=svc_laser&from=2026-10-20T09:00:00-03:00&to=2026-10-20T20:00:00-03:00&around=2026-10-20T18:00:00-03:00
{
  "data": [
    { "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:30:00-03:00", "resource_ids": ["res_ana", "res_laser1", "res_room2"] },
    { "start": "2026-10-20T18:45:00-03:00", "end": "2026-10-20T19:30:00-03:00", "resource_ids": ["res_carla", "res_laser1", "res_room1"] }
  ],
  "unavailable_reason": null
}

Ejemplo: objeto de reserva

{
  "id": "bkg_7Qx1",
  "status": "confirmed",
  "stage": "confirmed",
  "service_id": "svc_laser",
  "start": "2026-10-20T17:45:00-03:00",
  "end": "2026-10-20T18:30:00-03:00",
  "party_size": 1,
  "customer": { "id": "cus_31", "name": "Marina", "phone": "+5521988887777", "locale": "pt" },
  "allocations": [
    { "resource_id": "res_ana", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00" },
    { "resource_id": "res_laser1", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00" },
    { "resource_id": "res_room2", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00" }
  ],
  "priority": "normal",
  "tags": [],
  "source": "whatsapp",
  "created_at": "2026-10-19T11:02:13-03:00"
}

Las asignaciones incluyen el buffer (acá, 10 minutos después del servicio). En las tareas con cola, start y end vienen en null hasta que alguien las toma.

Cambios recientes

Estas son las novedades de la API, todas aditivas. El historial completo vive en el repositorio (docs/api/CHANGELOG.md).

  • Clientes: alta manual, datos ampliados, dirección con formatted, lat y lng, e identities[] multicanal.
  • Tareas y acciones: consulta unificada GET /work-items, ejecutor de acciones con efectos (tomar, soltar, resultados) y 409 already_claimed.
  • Mensajes con ubicación: WhatsApp, Telegram y WebChat guardan la ubicación compartida en la conversación.
  • Pausas: al pausar un canal, enviar un mensaje responde 409 channel_paused.
  • Conocimiento: fuentes de tipo sitio con max_pages y errores por causa.