Asístelo ToDo

Para desarrolladores

API Reference

La API REST de Asístelo ToDo te da acceso programático a todos los datos de tu cuenta: llamadas, citas, configuración del asistente y webhooks. Autenticación por Bearer token.

Genera tu API key en el panel: Ajustes → API → Nueva API key. Copia el token ahora: solo se muestra una vez.

Autenticación

Todas las peticiones requieren el header Authorization con tu token de API:

Ejemplo de autenticaciónbash
curl https://api.asistelotodo.com/v1/calls \
  -H "Authorization: Bearer TU_API_KEY" \
  -H "Content-Type: application/json"

Recursos disponibles

Llamadas

Lista las llamadas de tu organización, con filtros por fecha y estado.

MétodoEndpointDescripción
GET/v1/callsLista de llamadas (paginada)
GET/v1/calls/:idDetalle de una llamada
GET/v1/calls/:id/transcriptTranscripción de la llamada
GET /v1/callsbash
# Listar las últimas 20 llamadas
curl "https://api.asistelotodo.com/v1/calls?limit=20" \
  -H "Authorization: Bearer TU_API_KEY"

# Respuesta
{
  "calls": [
    {
      "id": "call_abc123",
      "status": "completed",
      "startedAt": "2026-06-24T10:30:00Z",
      "durationSec": 142,
      "summary": "Cliente preguntó disponibilidad para el martes.",
      "appointmentCreated": true
    }
  ],
  "total": 87,
  "nextCursor": "call_xyz456"
}

Citas

MétodoEndpointDescripción
GET/v1/appointmentsLista de citas
GET/v1/appointments/:idDetalle de una cita
DELETE/v1/appointments/:idCancelar una cita

Webhooks

Configura un endpoint en tu servidor para recibir eventos en tiempo real. Los webhooks se firman con HMAC-SHA256 para que puedas verificar que vienen de Asístelo ToDo.

Eventos disponibles

  • call.completed - Una llamada terminó
  • call.transferred - La llamada fue transferida a una persona
  • appointment.created - El asistente creó una cita
  • appointment.cancelled - Se canceló una cita
  • message.taken - El asistente tomó un mensaje

Verificar la firma

webhook-handler.jsjavascript
const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

// En tu handler (p.ej. Express):
app.post('/webhook/asistelo', express.raw({ type: '*/*' }), (req, res) => {
  const sig = req.headers['x-asistelo-signature'];
  if (!verifyWebhook(req.body, sig, process.env.WEBHOOK_SECRET)) {
    return res.status(401).send('Firma inválida');
  }
  const event = JSON.parse(req.body);
  console.log('Evento recibido:', event.type);
  res.sendStatus(200);
});

Límites de la API

  • 100 peticiones por minuto por API key.
  • Respuestas en JSON (UTF-8).
  • Paginación con cursor (no offset).
  • Los webhooks se reintentan hasta 5 veces con backoff exponencial.
Nunca expongas tu API key en el código del frontend (HTML, JS del navegador). Úsala solo en tu servidor o en variables de entorno seguras.

¿Necesitas ayuda técnica? Escríbenos en /contacto o visita la página para desarrolladores.