Límite de capacidad
- Nuevo
503 server_busy: cuando una clave tiene demasiadas solicitudes en curso a la vez, o la API está al máximo de capacidad, una solicitud devuelve503conRetry-After: 1. No se ejecutó y no cuenta contra tu límite de uso; reinténtala. Enviar hasta 100 destinatarios por envío de plantilla, en vez de una llamada por destinatario, lo evita. Consulta límites de uso.
Webhooks
conversation.assignedtrae más datos: el nombre y email del compañero (assignee), cómo se asignó (strategy,assigned_by,self_assigned) y una URL a la conversación (url), para que una herramienta sin código publique una alerta útil sin llamar a la API. Consulta el catálogo de eventos.
Formularios de WhatsApp
- Nuevo evento de webhook
whatsapp_flow.completed: se dispara cuando un cliente envía un formulario de WhatsApp, con las respuestas y lo que Ciarem guardó en el contacto. Consulta el catálogo de eventos.
Webhooks
Ciarem ahora puede llamar a tu servidor cuando algo cambia, así que ya no tienes que consultar una y otra vez. Empieza por la guía de webhooks.
- Endpoints de webhook: registra hasta 10 URLs HTTPS por organización y elige qué eventos recibe cada una (
/v1/webhook-endpoints: listar, crear, leer, actualizar, eliminar). También disponible para los administradores en el panel, en Configuración → Webhooks. - Diez tipos de evento:
contact.created,contact.updated,contact.deleted,contact.merged,contact.funnel_stage.changed,contact.owner.changed,conversation.created,conversation.assigned,conversation.closedymessages.inbound. Los eventos de contacto llevan el contacto completo. Consulta el catálogo de eventos. - Solicitudes firmadas: cada solicitud lleva un encabezado
Ciarem-Signature, un HMAC-SHA256 hecho con el secreto de firmawhsec_del endpoint. Consulta Verificar firmas. - Reintentos y un registro de entregas: una entrega fallida se reintenta durante un máximo de 3 días, y cada entrega de los últimos 30 días se puede leer con
GET /v1/webhook-endpoints/{id}/deliveriesy enviar de nuevo conPOST /v1/webhook-deliveries/{id}/redeliver. Consulta Entregas y reintentos. - Eventos de prueba:
POST /v1/webhook-endpoints/{id}/testenvía un evento ahora mismo y devuelve lo que respondió tu servidor.GET /v1/webhook-event-samplesdevuelve el cuerpo de ejemplo de cada tipo de evento. - Incluido en los mismos planes que la API: Growth, Scale y la prueba gratuita.
Baja de marketing por WhatsApp
- Los contactos ahora incluyen
marketing_opt_out(booleano, solo lectura):truecuando el contacto se dio de baja del marketing por WhatsApp. No se puede cambiar desde la API. Ve Baja de marketing por WhatsApp. POST /v1/templates/{id}/send: una plantilla de marketing no se envía a un destinatario cuyomarketing_opt_outestrue. La solicitud se acepta igual y los demás destinatarios se envían; al destinatario dado de baja no se le envía ni se le cobra. Las plantillas de utilidad y autenticación no cambian. Leemarketing_opt_outen el contacto para dejar fuera a esos destinatarios desde el inicio.
La API llega al plan Growth
- La API ahora está incluida en el plan Growth, no solo en Scale. Growth obtiene todos los endpoints con un presupuesto de 10 solicitudes/segundo; Scale sigue en 20 solicitudes/segundo y la prueba en 5 solicitudes/segundo. Las claves creadas durante una prueba que continuó en Growth vuelven a funcionar sin ningún cambio.
- Cambio incompatible:
scale_plan_requiredahora esplan_upgrade_required. El detalle del403para un plan activo sin la API (Solo) cambió de nombre, porque Scale ya no es el único plan que la incluye. Si tu integración compara contra el texto anterior, actualízala. Consulta Autenticación.
Los filtros de fecha de contactos usan fechas absolutas
GET /v1/contacts:property_filterya no acepta fechas relativas. Una condición sobre una propiedad DATE recibe una fechaYYYY-MM-DD, por ejemplocustom_birthday:gte:2026-09-01. Un valorpreset:comopreset:1wahora devuelve400coninvalid_property_filter. Nunca estuvieron documentadas: se resuelven en la zona horaria de quien mira el panel, algo que una integración no puede controlar. Calcula las fechas de tu lado.tzahora está documentado enGET /v1/contacts: la zona horaria IANA en la que se leencreated_from/created_to. Por defecto usa la zona horaria de la organización y, si no hay, UTC.
Acceso en la prueba gratuita, límites por segundo y 403 que dicen qué hacer
- La API está abierta durante la prueba gratuita. Una organización en prueba obtiene todos los endpoints, con un presupuesto menor, para construir y probar una integración antes de pagar.
- Los límites de uso ahora son por segundo: 20 solicitudes/segundo en Scale, 5 solicitudes/segundo durante la prueba, compartidas entre las claves de la organización. Los encabezados
X-RateLimit-*no cambian;Retry-Afteren un429ahora es siempre1. GET /v1/meganatrial(booleano), que estruemientras la organización está en su prueba gratuita.planahora reporta el código real del plan en vez de siempre"scale".403más claros.scale_plan_requiredahora significa solo que la organización está en un plan activo por debajo de Scale y tiene que subir de plan. Dos nuevos detalles cubren el resto:trial_expired(la prueba terminó sin método de pago) ysubscription_required(cancelada, o suspendida por falta de pago). Consulta Autenticación.
Plantillas de WhatsApp, envíos y campañas
La API ya puede enviar.
- Plantillas de WhatsApp: listar, leer, crear y eliminar (
/v1/templates). Crear una plantilla también la envía a Meta para aprobación en la misma llamada, así que regresa comoPENDING; consúltala hasta que Meta la pase aAPPROVEDoREJECTED. GET /v1/templates/{id}/send-requirements: qué necesita una plantilla antes de poder enviarse. Incluye los tokens de variables, cuáles de ellos se resuelven solos desde el contacto, slots de catálogo, botones de URL dinámicos, superficies de medios, y el motivo cuando una plantilla no se puede enviar nunca. Léelo antes de tu primer envío en vez de descubrirlo a través de 422s.POST /v1/templates/{id}/send: hasta 100 destinatarios en una llamada, cada uno identificado porcontact_idophoney con sus propiosvariables,url_suffixes,coupon_code,lto_expirationy medios.recipientsacepta un solo objeto o un arreglo, así que enviar a una persona no necesita envoltura. Los encabezados de medios aceptan una URL pública (header_media_url/card_media_urls), que descargamos del lado del servidor. Devuelve 202 y la campaña que creó.- Un
phoneque no coincide con ningún contacto crea uno, así que un envío puede hacer crecer tu CRM. - Envía
Idempotency-Keyy reintentar es seguro: la misma clave devuelve la campaña original durante 24 horas en vez de enviar de nuevo. - La solicitud se rechaza completa (nada encolado, nada cobrado) si falta una variable, si una clave no la usa la plantilla, si una URL de medios no se puede descargar, o si el lote excede lo que queda del límite de mensajería de 24 horas de WhatsApp.
- Un
- Campañas:
GET /v1/broadcastsyGET /v1/broadcasts/{id}para el progreso (sent/failed/pendingsiempre sumanrequested),GET /v1/broadcasts/{id}/recipientspara el resultado de cada destinatario, yPOST /v1/broadcasts/{id}/cancelpara abandonar el resto sin enviar. Los mensajes que WhatsApp ya aceptó no se pueden recuperar. GET /v1/channels/whatsapp/phones: los números conectados desde los que puede salir un envío, para quechannel_idsea descubrible. Opcional cuando tu cuenta de WhatsApp tiene exactamente un número; obligatorio cuando tiene más.
Lanzamiento de v1
La primera superficie pública de la API de Ciarem:
- Contactos: CRUD completo (
/v1/contacts). - Metadatos de CRM: propiedades y etapas del funnel, CRUD completo (
/v1/properties,/v1/funnel-stages). - Conversaciones: historial de solo lectura (
/v1/conversations), cada mensaje con unsenderdecontact,agent,aiosystem. /v1/me: identidad de la organización, plan, zona horaria e idioma.- Claves de API
oak_ligadas a la organización, 60 solicitudes/minuto por organización.