Turn on attack mode

POST /v1/attack-protection/attack-mode:activate · permission attack-protection:write

Puts the environment in attack mode for duration_minutes (15 to 1,440) from now, whatever bot_protection.mode and credential_stuffing say. Every password and one-time code step then asks for a harder bot challenge; passkey and social sign-in are not challenged. Use it when you see an attack before the automatic trigger does.

If your manual period is already open, its end moves to now plus duration_minutes when that is later; a shorter duration never ends it sooner (use deactivate). Opening a period writes the attack_mode_activated event and a management audit record (attack_mode.activated); an extension writes the audit record attack_mode.extended. Your credential is the actor. Send an Idempotency-Key header to retry safely.

Request

{ "duration_minutes": 60 }
Field Type Required Description
duration_minutes integer yes 15 to 1,440.

Response

200 OK with the current state, as GET /v1/attack-protection/attack-mode returns it.

Errors

Every error is an application/problem+json body with a stable code.

HTTP code When
400 malformed_request The body is not a JSON object.
400 unknown_field The body has a field other than duration_minutes.
422 validation_failed duration_minutes is missing, not an integer, or outside 15 to 1,440 (errors[].pointer is /duration_minutes).
401 unauthenticated The API key is missing, invalid or revoked.
403 insufficient_permissions The key lacks the attack-protection:write permission.
429 rate_limited The rate limit was exceeded; honor Retry-After.
503 service_unavailable A dependency is temporarily unavailable; retry later.

Example

curl -X POST https://api.eu.keenauth.com/v1/attack-protection/attack-mode:activate \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7b2f0c1e-attack-mode-1" \
  -d '{"duration_minutes": 60}'

CLI: keenauth attack-protection attack-mode activate --duration-minutes 60