Programar mensaje en una conversación
Programa un mensaje (AI o humano) en una conversación.
Ramas:
executor_kind: 'ai_employee'— al firing, el AI procesará la conversación con el LLM y enviará la respuesta. El fallback template es opcional (si la ventana 24h está cerrada al firing, el firing usa el default del canal o el que pasaste).executor_kind: 'human_user'— al firing, el sistema envía el payload literal que armaste (texto/media/QR/template). Eltemplate_uuides obligatorio porque la ventana 24h puede cerrar antes del firing y la API pública no puede asumir un default.
Replace: si la conversación ya tiene un schedule pending, este POST lo cancela y crea uno nuevo (atómico). Solo se permite 1 pending por conversación.
Archivos: para media (mensaje principal o header de template), envía file_uuid de un archivo previamente subido vía /files/request-upload + /files/confirm con module=api_messages. El servidor genera signed URLs y las re-firma al disparar.
Audit: la API key queda persistida en scheduled_messages.api_key_id. El author_snapshot reporta type='api_token' con el UUID público del token.
Autorizaciones
API token emitido desde Settings → API Token del dashboard 1TO1 AI. Enviar en header Authorization: Bearer sk_1to1_...
Parámetros de ruta
Slug del business, case-insensitive. Debe coincidir con el business del token.
"acme"
Cuerpo
- Option 1
- Option 2
ai_employee Identificador de la conversación — exactamente UNO de los cuatro campos debe venir. Orden de resolución: uuid > whatsapp_user_id > username > phone. El lookup filtra por el business del token (defense in depth cross-tenant). Resolver por phone o username puede devolver 409 (PHONE_NUMBER_AMBIGUOUS / USERNAME_AMBIGUOUS) cuando varios contactos comparten el identificador — aplica a cualquier endpoint que acepte esta referencia.
Fecha + hora interpretadas en la zona horaria del negocio (businesses.timezone, configurada al onboarding — típicamente America/Mexico_City). El servidor combina ambos campos contra esa zona para construir el instante UTC. La response normaliza a ISO Z (UTC).
Motivo del programado. Se inyecta como context_note en la conversación al firing.
1 - 500UUID pre-generado client-side (opcional). Reservado para uso futuro — el flow de pre-subir archivos referenciando el UUID antes del POST todavía no está disponible en API pública (sí en dashboard). Si lo omites, el servidor genera el UUID automáticamente; si lo envías, se respeta vía COALESCE en el RPC.
UUID del AI employee. Si null/omitido, usa el AI asignado a la conversación. Si la conv no tiene AI asignado y no lo pasas, falla con NO_AI_EMPLOYEE_ASSIGNED.
Template fallback. Si omitido, el firing usa el default scheduled template del canal (auto-creado al configurar WhatsApp).
Respuesta
Schedule creado.