MallaAgendar demo
Inicio/Documentación
N.º R1Recursos

Documentación técnica.

Referencia de la API REST, eventos webhook y el SDK de TypeScript. Para soporte escribe a soporte@trymalla.live o consulta el changelog para versiones de API.
01

Inicio rápido

La API de Malla expone los leads calificados, los inmuebles sincronizados y las conversaciones del agente. Todo en JSON, autenticado con un Bearer token. Cinco minutos para tu primer request.

  1. Entra a tu dashboard → Configuración → API → Generar nueva llave.
  2. Guarda la llave como variable de entorno (MALLA_API_KEY).
  3. Haz tu primer request:
bashcopiar
curl https://api.trymalla.live/v1/leads \
  -H "Authorization: Bearer ${MALLA_API_KEY}" \
  -G --data-urlencode "tone=hot" --data-urlencode "limit=25"
02

Autenticación

Todas las requests se autentican con un Bearer token en el header Authorization. No exponemos basic auth ni cookies — solo tokens.

bashcopiar
Authorization: Bearer mlla_live_xxx...

Las llaves mlla_live_ operan contra tu cuenta real. Para pruebas usa mlla_test_ y el dataset de demo. Las llaves se rotan desde el dashboard; la anterior queda activa 24 horas para evitar caídas.

03

Endpoints

Base URL: https://api.trymalla.live. Versionamos en la URL — la v1 es estable, los breaking changes salen como v2.

MétodoEndpoint y descripción
GET
/v1/leads

Lista leads paginados con filtros (tone, score, channel).

GET
/v1/leads/:id

Devuelve el lead completo con conversación y extractos.

PATCH
/v1/leads/:id

Actualiza estado del lead (asignación, etapa, notas).

GET
/v1/properties

Lista inmuebles activos con sus orígenes (portal).

POST
/v1/properties

Crea un inmueble manualmente desde tu sistema.

GET
/v1/conversations/:id

Devuelve la conversación completa con el lead.

POST
/v1/webhooks

Registra un endpoint para recibir eventos.

La referencia completa con ejemplos por endpoint está en construcción. Por ahora, cualquier campo es predecible — pídenos un ejemplo a soporte si lo necesitas hoy.

04

Webhooks

Recibe eventos en tiempo real cuando algo importante pasa. Todos los webhooks vienen firmados con HMAC-SHA256 — verifica la firma antes de actuar.

EventoCuándo dispara
lead.qualifiedEl agente termina de calificar un lead nuevo (score ≥ 70).
lead.handoffEl agente decide pasar el lead a un humano.
lead.coldUn lead deja de responder por más de 7 días.
conversation.messageLlega un mensaje nuevo a una conversación activa.
property.syncedTermina la sincronización de un portal externo.
typescriptcopiar
// Verifica la firma del webhook
import crypto from 'node:crypto';

export function verifyWebhook(req) {
  const signature = req.headers['x-malla-signature'];
  const expected = crypto
    .createHmac('sha256', process.env.MALLA_WEBHOOK_SECRET)
    .update(req.rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected),
  );
}
05

SDK & librerías

El SDK oficial para Node.js / TypeScript: npm install @malla/sdk. Para Python, Ruby y Go usamos OpenAPI — descarga el spec en /v1/openapi.json y genera el cliente.

typescriptcopiar
import { Malla } from '@malla/sdk';

const malla = new Malla({ apiKey: process.env.MALLA_API_KEY });

// Listar leads calientes de la última semana
const leads = await malla.leads.list({
  tone: 'hot',
  since: '7d',
  limit: 25,
});

for (const lead of leads.data) {
  console.log(`${lead.score} · ${lead.name} · ${lead.budget}`);
}
TypeScript
Oficial
Python
Comunidad
OpenAPI 3.1
Disponible
06

Límites y errores

Por defecto: 600 requests / minuto por llave. Cuando lo excedes, respondemos 429 Too Many Requests con el header Retry-After. Para volúmenes mayores escríbenos.

StatusSignificado
200Éxito.
201Recurso creado.
400Request inválido (body, parámetros).
401Sin token o token inválido.
403Token válido pero sin permisos para ese recurso.
404El recurso no existe o fue eliminado.
429Rate limit. Espera Retry-After.
500Error nuestro. Reintenta con backoff exponencial.

¿Estás construyendo una integración seria?

Te ayudamos con acceso anticipado a endpoints en beta, código de ejemplo específico para tu caso, y un canal directo de Slack con el equipo.

devs@trymalla.live