API 키 생성

POST /v1/api-keys · 권한 api-keys:write · 필수 Idempotency-Key

환경에 대한 관리 API 키를 생성합니다. secret 키는 전체 관리 API에 접근할 수 있으며, restricted 키는 나열된 권한(<resource>:<action>)만 가집니다.

요청

본문:

필드 타입 설명
name string 필수입니다. 1~100자입니다.
type string 필수입니다. secret 또는 restricted입니다.
permissions string[] restricted에는 필수이며 비어 있으면 안 됩니다(최대 200개). secret에는 생략하거나 비워 둡니다. 호출자의 권한을 초과할 수 없습니다.
expires_at string (date-time) 필수입니다. 미래 시점이어야 하며 현재로부터 최대 730일 이내여야 합니다.
allowed_cidrs string[] 선택 사항입니다. CIDR 블록은 최대 20개입니다.

응답

201 Created와 Cache-Control: no-store입니다. 목록 응답과 같은 키 객체에 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>"
}

오류

HTTP code 발생 시점
401 unauthenticated 키가 없거나 잘못되었거나 취소된 경우입니다.
403 insufficient_permissions 키에 필요한 권한이 없는 경우입니다.
403 permission_escalation 요청이 호출 키보다 많은 권한, 더 넓은 네트워크 범위 또는 더 늦은 만료일을 가진 키를 만들려는 경우, restricted 키가 자신의 권한을 넘어 키를 생성, 교체 또는 취소하려는 경우, 또는 다른 키가 대시보드에서 만든 키를 교체 또는 취소하려는 경우입니다.
409 api_key_limit_reached 환경에 이미 활성 키가 최대 개수인 50개 있는 경우입니다.
422 validation_failed 본문이 잘못된 경우입니다. name이 없거나 너무 긴 경우, 알 수 없는 type, permissions 없이 restricted를 보낸 경우, permissions를 포함한 secret, 형식이 잘못된 권한 또는 CIDR, 과거이거나 현재로부터 730일을 초과하는 expires_at인 경우입니다.

예제

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"}'