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
channelIdstringIdentificador del canal. Puede coincidir con el phoneNumber o con el channelId de un agente activoobligatorio
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.

Errores comunes

CódigoDescripción
400Plantilla no encontrada, parámetros inválidos, botones incompatibles, URL de archivo inválida o scheduledDates no futuras
404Campaña no encontrada o canal (channelId) sin agente activo
500Error al comunicarse con el servicio de envío

Notas

  • 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.