API de automatizaciones v1 (contrato 1.2) · POST /api/automations/v1/runs con
campaign_id · Autenticación Bearer con una llave frk_live_…
Tu sistema avisa que pasó algo (una solicitud de crédito, una cita, un pedido) y Frepi le envía a esa persona la plantilla de una campaña con formulario. Cuando la persona toca el botón de la plantilla, Frepi le manda el formulario de WhatsApp en el mismo chat. Las respuestas quedan en Frepi, en el contacto, y las lees por la API.
Los otros botones de la plantilla le escriben a la línea, como hoy: los contesta el agente de la línea o tu equipo.
automations:run (y automations:read para leer las respuestas).…/marketing/broadcasts/<id>. Ese id es tu campaign_id.curl -X POST https://ejemplo.frepi.ai/api/automations/v1/runs \
-H "Authorization: Bearer $FREPI_AUTOMATION_KEY" \
-H "Idempotency-Key: cred-2291" \
-H "Content-Type: application/json" \
-d '{
"campaign_id": "6f1c2a9e-4b7d-4c3a-9e8f-2d1b0a7c5e43",
"to": { "phone": "+573119029020" },
"external_ref": "CRED-2291"
}'
202 con el id del envío. Frepi envía la plantilla; la persona tiene 24 h
para tocar el botón.variables (solo texto).line solo cuando la campaña sale de más de una línea («La línea del vendedor de cada contacto»):
el número de WhatsApp de una de ellas, por ejemplo "line": "+57 601 555 0100". Con una sola
línea, no lo mandes.logic, automation_id ni agent con campaign_id.409 logic_archived.409 logic_pending_approval con approve_url; una persona la aprueba una vez en
Frepi.Idempotency-Key es obligatorio. La misma llave con el mismo cuerpo responde 202 con
replayed: true y no envía nada otra vez.409 idempotency_conflict.5xx, vuelve a intentar con la misma llave: nunca se envía dos
veces.GET /api/automations/v1/runs/{id} trae el estado del envío y answers[]: un campo por
respuesta, con su token y su valor.GET /api/automations/v1/runs?updated_since=… (paginado con
cursor). Pide cada pocos minutos lo que cambió desde tu última lectura."pro"); una fecha, como YYYY-MM-DD.Lee el code, nunca el message. Los problemas de validación llegan en
422 validation_failed, en errors[], cada uno con su code y su
path.
| Código | Qué pasó | Qué hacer |
|---|---|---|
campaign_not_found (422) | No hay una campaña con formulario lanzada con ese id en este espacio (un borrador, una prueba o una campaña sin formulario no cuentan). | Revisa el id en la dirección de la campaña. |
campaign_line_required (422) | La campaña sale de varias líneas y no mandaste line, o no es una de ellas. | Manda line con una de sus líneas. |
form_unavailable (422) | El formulario se archivó o ya no está publicado en la línea. | Publícalo en Formularios › el formulario › Líneas, o lanza otra campaña. |
logic_pending_approval (409) | La lógica de la campaña espera una aprobación. | Una persona abre approve_url en Frepi. |
logic_archived (409) | Una persona archivó la lógica. | Usa una campaña nueva. |
line_not_allowed (403) | Tu llave no puede usar esa línea. | Crea una llave con esa línea. |
contact_opted_out (409) | La persona pidió no recibir mensajes de este negocio. | No vuelvas a intentar. |
rate_limited (429) | Pasaste el límite por minuto o por día de tu llave. | Espera lo que dice Retry-After. |
phone_daily_limit (429) | Ese teléfono ya recibió 3 envíos de la API hoy. | Intenta mañana. |
contracts/automations_v1/ (versión 1.2). La guía general
de la API está en Mensajes por evento.