Reten Docs
Actividades

Crear Actividades en Lote

Crear multiples actividades en una sola solicitud.

POST /api/activities/bulk

Crea hasta 200 actividades en una sola solicitud. Cada elemento sigue el mismo esquema que el endpoint individual Crear Actividad.

Auth: Requerida — permiso CREATE_ACTIVITY

Cuerpo de la Solicitud

CampoTipoRequeridoDescripcion
itemsarraySiArray de objetos de actividad (min 1, max 200)

Cada elemento en items tiene los mismos campos que el cuerpo de la solicitud de Crear Actividad:

CampoTipoRequeridoDescripcion
typestringSiTASK o MESSAGE
reasonstringSiRazon para crear la actividad
channelstringSiSALESMAN, CALLCENTER, WHATSAPP, EMAIL, SMS, PUSH
commerce_idUUIDSiID del comercio destino
idempotency_keystringSiClave unica por tenant (previene duplicados)
scheduled_atISO 8601SiCuando se debe ejecutar la actividad
suggested_execution_timeISO 8601NoHora sugerida de ejecucion
user_statusstringNoContexto de estado del usuario
scoreintegerNoPuntaje de prioridad
assignment_reasonstringNoRazon de la asignacion
target_criteriaarrayNoCriterios de resolucion de objetivo
attribute_keysstring[]NoNombres de claves de atributos a resolver via politicas
attributesarrayNoValores de atributos provistos por el llamador

Ejemplo

curl -X POST https://api.reten.ai/api/activities/bulk \
  -H "Authorization: Bearer <token>" \
  -H "x-tenant-id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "type": "MESSAGE",
        "reason": "monthly_promotion",
        "channel": "WHATSAPP",
        "commerce_id": "880e8400-e29b-41d4-a716-446655440000",
        "idempotency_key": "msg-2025-01-15-001",
        "scheduled_at": "2025-01-16T09:00:00.000Z"
      },
      {
        "type": "MESSAGE",
        "reason": "monthly_promotion",
        "channel": "EMAIL",
        "commerce_id": "990e8400-e29b-41d4-a716-446655440000",
        "idempotency_key": "msg-2025-01-15-002",
        "scheduled_at": "2025-01-16T09:00:00.000Z"
      }
    ]
  }'
const response = await fetch("https://api.reten.ai/api/activities/bulk", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>",
    "x-tenant-id": "<tenant-id>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    items: [
      {
        type: "MESSAGE",
        reason: "monthly_promotion",
        channel: "WHATSAPP",
        commerce_id: "880e8400-e29b-41d4-a716-446655440000",
        idempotency_key: "msg-2025-01-15-001",
        scheduled_at: "2025-01-16T09:00:00.000Z",
      },
      {
        type: "MESSAGE",
        reason: "monthly_promotion",
        channel: "EMAIL",
        commerce_id: "990e8400-e29b-41d4-a716-446655440000",
        idempotency_key: "msg-2025-01-15-002",
        scheduled_at: "2025-01-16T09:00:00.000Z",
      },
    ],
  }),
});
const result = await response.json();
import requests

response = requests.post(
    "https://api.reten.ai/api/activities/bulk",
    headers={
        "Authorization": "Bearer <token>",
        "x-tenant-id": "<tenant-id>",
    },
    json={
        "items": [
            {
                "type": "MESSAGE",
                "reason": "monthly_promotion",
                "channel": "WHATSAPP",
                "commerce_id": "880e8400-e29b-41d4-a716-446655440000",
                "idempotency_key": "msg-2025-01-15-001",
                "scheduled_at": "2025-01-16T09:00:00.000Z",
            },
            {
                "type": "MESSAGE",
                "reason": "monthly_promotion",
                "channel": "EMAIL",
                "commerce_id": "990e8400-e29b-41d4-a716-446655440000",
                "idempotency_key": "msg-2025-01-15-002",
                "scheduled_at": "2025-01-16T09:00:00.000Z",
            },
        ],
    },
)
result = response.json()

Respuesta 201 Created

Devuelve un array de objetos de actividad creados.

Respuestas de Error

EstadoDescripcion
400Error de validacion — campos invalidos o faltantes en uno o mas elementos
401Token de autenticacion faltante o invalido
409Clave de idempotencia ya existe para uno o mas elementos