Вебхуки
Получайте HTTP-событие на собственный URL вместо опроса API.
Создание вебхука
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 возвращается только один раз, в момент создания. Сохраните его для проверки подписи доставляемых событий.Доступные события
job.completed— асинхронная задача (видео) успешно завершенаjob.failed— асинхронная задача завершилась неудачейbudget.alert— превышен пороговый уровень оповещения о бюджете проекта
Проверка подписи
Каждая доставка включает заголовок X-Emini-Signature: HMAC-SHA256 от необработанного тела запроса, вычисленный с использованием вашего 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));
}Управление вебхуками
bash
GET /v1/webhooks # lister
DELETE /v1/webhooks/{webhook_id} # desactiver
GET /v1/webhooks/{webhook_id}/deliveries # historique des livraisonsАльтернатива: опрос
Вебхуки не обязательны — GET /v1/jobs/{job_id} всегда доступен для активного опроса состояния задачи (см. руководство Видео).