Crear una clave de API

POST /v1/api-keys · permiso api-keys:write · Idempotency-Key obligatorio

Crea una clave de API de gestión para el entorno. Una clave secret accede a toda la API de gestión; una clave restricted solo tiene los permisos indicados (<resource>:<action>).

Solicitud

Cuerpo:

Campo Tipo Descripción
name string Obligatorio. De 1 a 100 caracteres.
type string Obligatorio. secret o restricted.
permissions string[] Obligatorio y no vacío para restricted (como máximo 200); ausente o vacío para secret. No puede superar los permisos del llamante.
expires_at string (date-time) Obligatorio, en el futuro, como máximo a 730 días.
allowed_cidrs string[] Opcional, como máximo 20 bloques CIDR.

Respuesta

201 Created con Cache-Control: no-store. El objeto de la clave como en la respuesta de lista, más key.

{
  "id": "key_0000000000000000000000001z",
  "name": "ci",
  "type": "restricted",
  "permissions": ["users:read"],
  "allowed_cidrs": [],
  "last4": "xxxx",
  "created_by": "key_…",
  "created_at": "2026-10-01T10:00:00Z",
  "expires_at": "2027-10-01T10:00:00Z",
  "last_used_at": null,
  "last_used_ip": null,
  "rotated_from": null,
  "revoked_at": null,
  "revoke_reason": null,
  "key": "<shown once>"
}

Errores

HTTP code Cuándo
401 unauthenticated La clave falta, no es válida o ha sido revocada.
403 insufficient_permissions La clave no tiene el permiso requerido.
403 permission_escalation La solicitud daría a una clave más permisos, un rango de red más amplio o una caducidad posterior a los de la clave que llama; una clave restricted intenta crear, rotar o revocar más allá de sus propios permisos; u otra clave intenta rotar o revocar una clave creada en el panel.
409 api_key_limit_reached El entorno ya tiene el máximo de 50 claves activas.
422 validation_failed El cuerpo no es válido: name falta o es demasiado largo, type desconocido, restricted sin permissions, secret con permissions, permiso o CIDR mal formado, expires_at en el pasado o a más de 730 días.

Ejemplo

curl -X POST https://api.eu.keenauth.com/v1/api-keys \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"ci","type":"restricted","permissions":["users:read"],"expires_at":"2027-10-01T10:00:00Z"}'