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étodo | Endpoint | Descripción |
|---|---|---|
| GET | /v1/calls | Lista de llamadas (paginada) |
| GET | /v1/calls/:id | Detalle de una llamada |
| GET | /v1/calls/:id/transcript | Transcripció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étodo | Endpoint | Descripción |
|---|---|---|
| GET | /v1/appointments | Lista de citas |
| GET | /v1/appointments/:id | Detalle de una cita |
| DELETE | /v1/appointments/:id | Cancelar 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 personaappointment.created- El asistente creó una citaappointment.cancelled- Se canceló una citamessage.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.