# Rotar el secreto de firma
POST https://api.wizerp.com/api/v1/webhooks/{clave}/secreto
Genera un secreto de firma nuevo y lo devuelve UNA vez. Durante 24 horas cada aviso trae DOS firmas v1 en X-Wizerp-Firma (la del secreto nuevo y la del anterior), para que cambies el secreto en tu sistema sin perder avisos; acepta el aviso si cualquiera de las dos cuadra. Sólo firma el inmediato anterior: si rotas dos veces en ese lapso, el más viejo deja de firmar. Sin cuerpo.
Toda escritura necesita la cabecera Idempotency-Key: un valor único por operación (por ejemplo un UUID) que repites tal cual al reintentar. Con la misma clave y los mismos datos se devuelve la respuesta guardada, sin duplicar; con la misma clave y datos distintos responde 409.
Permiso: webhooks:write
Genera un secreto de firma nuevo y lo devuelve UNA vez. Durante 24 horas cada aviso trae DOS firmas v1 en X-Wizerp-Firma (la del secreto nuevo y la del anterior), para que cambies el secreto en tu sistema sin perder avisos; acepta el aviso si cualquiera de las dos cuadra. Sólo firma el inmediato anterior: si rotas dos veces en ese lapso, el más viejo deja de firmar. Sin cuerpo.
Toda escritura necesita la cabecera Idempotency-Key: un valor único por operación (por ejemplo un UUID) que repites tal cual al reintentar. Con la misma clave y los mismos datos se devuelve la respuesta guardada, sin duplicar; con la misma clave y datos distintos responde 409.
Requiere el permiso webhooks:write en la llave
· contrato del 2026-10-12
Parámetros de ruta
claveenteroen la URL
Clave del webhook (la de GET /webhooks).
Cuerpo
Sin cuerpo. Lleva la cabecera Idempotency-Key, como toda escritura: un valor único por operación que repites tal cual al reintentar.
Respuestas
400Petición mal formada: filtro no permitido, filtro vacío, cursor o límite inválidos, o una cabecera de navegador
401La llave no es válida, está revocada o venció (llave_invalida), o el usuario dueño de la llave ya no tiene acceso a la empresa (llave_sin_titular)
402Tu empresa no tiene un plan Pro vigente (plan_requerido). Mientras los límites estén en modo de aviso, esta situación sigue contestando 401 llave_invalida
403La llave no tiene el permiso que pide esta operación (sin_permiso), o no tiene aceptados los términos de uso de la API vigentes (terminos_pendientes: acéptalos en Wizerp, Configuración › Llaves de API)
404La ruta no existe, o tu empresa no tiene la API habilitada
409Conflicto: misma Idempotency-Key con datos distintos, o ya existe un registro con ese identificador (RFC, SKU)
413El cuerpo pasa del máximo
415El cuerpo no va como JSON (falta Content-Type: application/json)
422Un dato no es válido para tu empresa
429Pasaste el ritmo de 150 peticiones por minuto de tu llave (limite_excedido) o el cupo mensual de tu empresa (cupo_agotado). La respuesta trae Retry-After
500Falló de nuestro lado. Reintenta y reporta el valor de peticion
503Tu empresa tiene demasiadas peticiones en curso, o la búsqueda no está disponible. Trae Retry-After