Integra Prealerto con tu sistema.
Una API REST con credenciales por courier, webhooks firmados y CSV. Todo documentado en público, sin iniciar sesión. Un integrador externo usa exactamente las mismas vías que cualquier courier.
Qué puedes hacer
- Consultar prealertas confirmadas con filtros por fecha y estado, paginadas.
- Crear, actualizar, listar y eliminar clientes finales; los cambios aplican al bot de inmediato.
- Recibir cada prealerta confirmada o actualizada por webhook, con identificador único por evento.
- Pedir un enlace temporal a la factura de una prealerta.
- Importar y exportar clientes y prealertas por CSV, con las mismas trece columnas.
Cómo empezar
- 1
Crea una credencial
En Integraciones, un administrador crea una credencial con nombre. El secreto se muestra una sola vez; se puede revocar cuando quieras.
curl https://app.prealerto.com/api/v1/me \ -H "Authorization: Bearer pk_live_…"
- 2
Registra tu webhook
Una URL HTTPS y los eventos que te interesan. Recibes el secreto de firma (whsec_…) una sola vez.
curl -X POST https://app.prealerto.com/api/v1/webhooks \ -H "Authorization: Bearer pk_live_…" \ -d '{ "url": "https://tu-sistema.com/prealerto", "events": ["prealert.confirmed", "prealert.updated"] }' - 3
Dispara un evento de prueba
Llega un prealert.confirmed con test: true, firmado igual que los reales. El panel muestra el resultado de la entrega.
curl -X POST https://app.prealerto.com/api/v1/webhooks/{id}/test \ -H "Authorization: Bearer pk_live_…"
El evento que recibes
API con credencial por courier
Consulta prealertas confirmadas con filtros por fecha y estado, y administra clientes. Cada credencial ve solo los datos de su courier.
Webhook firmado
Cada prealerta confirmada o actualizada llega a tu URL con firma HMAC-SHA256, identificador único y reintentos con espera creciente durante 24 horas.
CSV cuando no hay desarrollador
Descarga con filtros o recibe el archivo por correo diario o mensual. Mismas trece columnas que la API.
{
"id": "evt_01J9W3Z8P4Q6R7S8T9U0V1W2X3",
"type": "prealert.confirmed",
"created_at": "2026-11-03T15:04:05Z",
"test": false,
"organization_id": "7d4f1c2e-…",
"data": {
"id": "f3a1c2d4-…",
"status": "confirmed",
"tracking": "1Z999AA10123456784",
"box_code": "SJO-20431",
"store": "Amazon",
"price": "89.99",
"currency": "USD",
"documents": [{ "kind": "pdf", "url": "https://…", "url_expires_at": "…" }]
}
}Verifica la firma
Cada entrega lleva Prealerto-Signature: t=…,v1=…. Calcula HMAC-SHA256 del cuerpo crudo precedido por el timestamp, compara en tiempo constante y rechaza lo que tenga más de cinco minutos.
- Reintentos
- 7 intentos: inmediato, 1 min, 5 min, 30 min, 2 h, 8 h, 24 h. Después, reenvío manual desde el panel o por API.
- Límite
- 600 solicitudes por minuto por credencial, con Retry-After.
- Aislamiento
- Un identificador de otro courier responde 404, igual que uno inexistente.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verifyPrealertoSignature(rawBody, header, secret) {
const parts = Object.fromEntries(header.split(",").map((part) => part.split("=")));
const expected = createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
return timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}