← Frepi Developers

Enviar un formulario desde tu sistema

API de automatizaciones v1 (contrato 1.2) · POST /api/automations/v1/runs con campaign_id · Autenticación Bearer con una llave frk_live_…

1 · Qué hace

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.

2 · Antes de empezar

3 · Enviar a una persona

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"
  }'

4 · Aprobar una vez

5 · Idempotencia

6 · Leer las respuestas

7 · Errores

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ódigoQué 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.

8 · Límites

El contrato completo está en contracts/automations_v1/ (versión 1.2). La guía general de la API está en Mensajes por evento.