Manda · API v1

Acceso de solo lectura a los datos de tu cuenta. Zona horaria: America/Lima

Autenticación

Manda al equipo de tu proveedor tu API Key en cada solicitud, en la cabecera:
Authorization: Bearer mnd_live_tu_llave_aqui
También se acepta X-Api-Key: mnd_live_... o ?api_key=mnd_live_.... La llave es privada: quien la tenga puede leer todos los datos de tu cuenta. Si se filtra, revócala y genera otra desde Manda.

Base URL

https://app.mandacrm.com/api/v1

Endpoints

GET /ping — verifica tu llave y devuelve el nombre de la cuenta.
GET /leads — leads de formularios (nombre, teléfono, email, formulario, campos).
GET /contacts — contactos con sus datos personalizados y asesor.
GET /tasks — tareas/pendientes (estado, vencimiento, asesor).
GET /campaigns — difusiones con totales (enviados, respondidos, bajas).
GET /sales — ventas registradas.
GET /stats — estadísticas ya calculadas (horarios pico, por día, por formulario).

Parámetros comunes

ParámetroDescripción
from, toRango de fechas. YYYY-MM-DD o ISO. Ej: ?from=2026-09-01&to=2026-09-30
limit, offsetPaginación. limit por defecto 100, máximo 1000.
format?format=csv devuelve CSV en vez de JSON (en leads, contactos, tareas, ventas).
formSolo en /leads: filtra por nombre de formulario.
statusSolo en /tasks: done o pending.

Ejemplo

curl -H "Authorization: Bearer mnd_live_xxx" \
  "https://app.mandacrm.com/api/v1/leads?from=2026-09-01&limit=50"
Respuesta:
{
  "ok": true,
  "data": [
    { "id": "…", "createdTime": "2026-09-18T05:32:46+0000",
      "name": "Juan Pérez", "phone": "51993015853", "email": "",
      "form": "01 PERFECT FORM", "page": "Hacienda Paraíso", "source": "meta",
      "assignedTo": "Ricardo", "fields": { "ciudad": "Lima" } }
  ],
  "paging": { "total": 161, "limit": 50, "offset": 0, "returned": 50 }
}

Estadísticas de horarios

GET /stats ya te entrega los horarios pico sin que tengas que calcular:
{
  "leads": {
    "total": 161,
    "peakHour":    { "hour": 20, "count": 34 },
    "peakWeekday": { "weekday": 3, "name": "miércoles", "count": 41 },
    "byHour":    [ { "hour": 0, "count": 1 }, … 24 valores … ],
    "byWeekday": [ { "weekday": 0, "name": "domingo", "count": 5 }, … ],
    "byForm":    { "01 PERFECT FORM": 161 }
  }
}
Todo en horario de Lima.