
# API 키 조회

`GET /v1/api-keys/{key_id}` · 권한 `api-keys:read`

API 키 하나의 메타데이터를 반환합니다. 원본 키는 반환되지 않습니다.

`last_used_at`은 분당 최대 한 번 기록되므로 마지막 요청보다 최대 1분 늦을 수 있습니다. `last_used_ip`는 해당 요청의 /24(IPv4) 또는 /48(IPv6) 네트워크이며, 전체 주소는 기록되지 않습니다. 환경은 `expires_at` 30일, 7일, 1일 전에 `api_key.expiry_warned` 이벤트를 받습니다(임계값마다 한 번; 폐기되었거나 회전 중인 키는 받지 않습니다).

## 요청

| 매개변수 | 위치 | 설명 |
|---|---|---|
| `key_id` | 경로 | API 키 ID(`key_…`). |

## 응답

`200 OK`. 키 객체.

```json
{
  "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
}
```

## 오류

| HTTP | `code` | 발생 조건 |
|---|---|---|
| 401 | `unauthenticated` | 키가 없거나 유효하지 않거나 폐기되었습니다. |
| 403 | `insufficient_permissions` | 키에 필요한 권한이 없습니다. |
| 404 | `not_found` | 이 환경에 해당 키가 없습니다. |

## 예시

```bash
curl https://api.eu.keenauth.com/v1/api-keys/key_0000000000000000000000001z \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
