Referencia Técnica

Runbook orientado a desarrolladores para integraciones reales: endpoint, payload, respuesta y comportamiento operacional.

TL;DR de integración

  • Base URL: https://backend.sendeasy.app
  • Auth: Authorization: Bearer <token>
  • Formatos: application/json y multipart/form-data
  • Muchos flujos se encolan de forma asíncrona
  • Trata error como contrato estable de máquina

Endpoint principal de envío

POST /api/messages/send

curl --location 'https://backend.sendeasy.app/api/messages/send' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer CHANNEL_TOKEN' \
  --data '{
    "number": "5511999999999",
    "body": "Hola desde la integración"
  }'

Respuesta típica:

{
  "message": "Message queued successfully"
}

Referencia rápida WABA

Prefijo:

/api/v1/waba/:whatsappId

Ejemplos:

  • GET /templates
  • POST /send
  • POST /send-text
  • POST /send-image
  • POST /send-document
  • POST /marketing-lite/send

Referencia rápida Email API

Email transaccional desde el email dueño del token (cada email del proyecto tiene el suyo, en Canales → Email), 1 crédito de email por envío:

  • POST /api/v1/email/send — body { to, subject, html | text, fromName? }
  • GET /api/v1/email/health — ¿el email del token está verificado? (sin crédito)

Referencia completa en /es/server/email.

Referencia rápida Bots API

Generación de texto, extracción de PDF y búsqueda en la base de conocimiento, 1 crédito de bot por generación (el mismo saldo del bot de atención en WhatsApp). El prompt vive en el bot (botId); sin saldo la respuesta es 402 ERR_NO_BOT_CREDITS:

  • POST /api/v1/ai/completion — body { prompt, botId | instructions, responseFormat? }
  • POST /api/v1/ai/extract — multipart, campo file (PDF hasta 25 MB)
  • POST /api/v1/ai/search — body { botId, query, topK? }; solo recuperación (sin crédito)
  • GET /api/v1/ai/health — ¿el servicio de IA está en línea y hay saldo? (sin crédito)

Referencia completa en /es/server/bots.

Referencia rápida de webhooks

Forma del payload enviado a tu URL de webhook:

{ event, channel, data, channelId }

Ejemplo:

{
  "event": "messages.upsert",
  "channel": "whatsapp",
  "data": {},
  "channelId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Estrategia de error

function normalizeApiError(status, body) {
  return {
    status,
    code: body?.error || 'UNKNOWN_ERROR',
    message: body?.message || null,
  }
}

Essa informação foi útil?