Enviar Campaña

Envía una campaña a través de un canal activo del workspace. Puede usar la plantilla ya guardada en la campaña o una plantilla indicada explícitamente en el request.

POST https://api.platica.mx/v1/campaigns/{campaignId}/send

Parámetros de la URL

ParámetroTipoDescripciónRequerimiento
campaignIdstringIdentificador único de la campañaobligatorio

Ejemplos de request

Envío inmediato usando la plantilla guardada en la campaña

{
  "channelId": "5215512345678",
  "template": {
    "params": ["Juan", "20% de descuento"],
    "sendToProblematic": false,
    "sendToUndeliverable": false
  }
}

Envío inmediato con una plantilla específica

{
  "channelId": "5215512345678",
  "template": {
    "name": "promo_verano_2026",
    "params": ["Juan", "20% de descuento"],
    "sendToProblematic": false,
    "sendToUndeliverable": false
  }
}

Envío con imagen y fechas programadas

{
  "channelId": "5215512345678",
  "template": {
    "name": "promo_verano_2026",
    "params": ["Juan"],
    "type": "image",
    "file": "https://example.com/promo.jpg",
    "scheduledDates": [
      "2026-07-01T10:00:00Z",
      "2026-07-08T10:00:00Z"
    ],
    "sendToProblematic": false,
    "sendToUndeliverable": false
  }
}

Envío con botones dinámicos

{
  "channelId": "5215512345678",
  "template": {
    "name": "promo_con_enlace",
    "params": ["Juan"],
    "buttons": [
      {
        "index": 0,
        "type": "button",
        "sub_type": "url",
        "text": "Ver oferta",
        "parameters": [
          { "type": "text", "text": "promo2026" }
        ]
      }
    ]
  }
}

Parámetros del cuerpo

ParámetroTipoDescripciónRequerimiento
channelIdstringCanal EMISOR desde el que se envía la campaña (prefixedChannelId, ej. wb-123)obligatorio
responderAgentIdstringAgente que RESPONDE las respuestas de la campaña, desacoplado del canal. Si se omite, se usa el defaultAgentId del canalopcional
templateobjectConfiguración del template para el envíoobligatorio

Objeto template

ParámetroTipoDescripciónRequerimiento
namestringNombre del template a usar. Si se omite, se usa el template configurado en la campañaopcional
paramsstring[]Valores para los parámetros variables del template, en ordenopcional
typestringTipo de media adjunto: "image", "video" o "document"opcional
filestringURL http(s) del archivo a adjuntar. Es obligatorio cuando la plantilla requiere mediaopcional
buttonsarrayParámetros dinámicos para los botones del templateopcional
scheduledDatesstring[]Fechas de envío programadas en formato ISO 8601. Deben ser fechas futurasopcional
sendToProblematicbooleanSi se debe enviar a contactos con número problemáticoopcional (default false)
sendToUndeliverablebooleanSi se debe enviar a contactos con entregas fallidas previasopcional (default false)

Objeto buttons[]

ParámetroTipoDescripciónRequerimiento
indexnumberÍndice del botón en el template (empieza en 0)obligatorio
typestringTipo de componente. Si se omite, la API usa "button"opcional
sub_typestringSubtipo: "url", "phone_number", "quick_reply" u "otp"opcional
textstringTexto del botón. La API puede inferirlo desde la plantillaopcional
placeholderstringPlaceholder o valor base definido en la plantilla para botones dinámicosopcional
parametersarrayParámetros dinámicos del botónobligatorio

Objeto buttons[].parameters[]

ParámetroTipoDescripciónRequerimiento
typestringTipo de parámetro del botónobligatorio
textstringValor textual del parámetroobligatorio
urlstringURL asociada al parámetro cuando aplicaopcional
selectedFieldsstring[]Campos seleccionados para mapear contenido dinámicoopcional

Respuesta 200 OK

{
  "status": "success",
  "message": "Campaign sent successfully",
  "data": {
    "status": "queued"
  }
}

data contiene la respuesta del servicio de envío aguas arriba, por lo que su estructura puede variar entre workspaces o integraciones.

Notas

  • channelId es el canal EMISOR. El agente que responde se controla con responderAgentId (desacoplado del canal): así puedes enviar desde un número y que responda un agente específico sin modificar el agente conectado a ese canal. Si no envías responderAgentId, responde el defaultAgentId del canal.
  • Si template.name se omite, se usa la plantilla guardada en la campaña. Si la campaña no tiene una plantilla configurada, el envío falla con 400.
  • El número de elementos en params debe coincidir exactamente con el número de variables esperado por la plantilla.
  • Si envías buttons, la cantidad de botones y sus índices deben existir en la plantilla validada.
  • Cuando la plantilla requiere media, file debe ser una URL válida http o https.
  • Todas las fechas de scheduledDates deben estar en el futuro al momento del request.