Webhooks
Recibe un evento HTTP en tu propia URL en lugar de sondear la API.
Crear un webhook
http
POST /v1/webhooksjson
{
"url": "https://votre-app.exemple.com/webhooks/emini",
"events": ["job.completed", "job.failed"]
}json
{
"webhook": { "id": "...", "url": "https://votre-app.exemple.com/webhooks/emini", "events": ["job.completed", "job.failed"], "status": "active" },
"secret": "whsec_..."
}secret solo se devuelve una vez, en el momento de su creación. Consérvalo para verificar la firma de las entregas.Eventos disponibles
job.completed— un job asíncrono (vídeo) ha terminado con éxitojob.failed— un job asíncrono ha falladobudget.alert— se ha superado un umbral de alerta de presupuesto del proyecto
Verificar la firma
Cada entrega incluye una cabecera X-Emini-Signature: un HMAC-SHA256 del cuerpo bruto de la solicitud, calculado con tu secret.
Node.jstypescript
import crypto from "node:crypto";
function isValid(rawBody: string, signature: string, secret: string): boolean {
const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}Gestionar los webhooks
bash
GET /v1/webhooks # lister
DELETE /v1/webhooks/{webhook_id} # desactiver
GET /v1/webhooks/{webhook_id}/deliveries # historique des livraisonsAlternativa: sondeo
Los webhooks son opcionales — GET /v1/jobs/{job_id} siempre está disponible para sondear activamente el estado de un job (ver la guía Vídeo).