
# API-Schlüssel abrufen

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

Gibt die Metadaten eines API-Schlüssels zurück. Der rohe Schlüssel wird nie zurückgegeben.

`last_used_at` wird höchstens einmal pro Minute geschrieben und kann daher bis zu eine Minute hinter der letzten Anfrage zurückliegen; `last_used_ip` ist das /24-Netz (IPv4) bzw. /48-Netz (IPv6) dieser Anfrage, niemals die vollständige Adresse. Die Umgebung erhält 30, 7 und 1 Tag vor `expires_at` jeweils ein Ereignis `api_key.expiry_warned` (einmal pro Schwelle; widerrufene und gerade rotierende Schlüssel erhalten keines).

## Anfrage

| Parameter | Ort | Beschreibung |
|---|---|---|
| `key_id` | Pfad | ID des API-Schlüssels (`key_…`). |

## Antwort

`200 OK`. Das Schlüsselobjekt.

```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
}
```

## Fehler

| HTTP | `code` | Wann |
|---|---|---|
| 401 | `unauthenticated` | Der Schlüssel fehlt, ist ungültig oder widerrufen. |
| 403 | `insufficient_permissions` | Dem Schlüssel fehlt die erforderliche Berechtigung. |
| 404 | `not_found` | Der Schlüssel existiert in dieser Umgebung nicht. |

## Beispiel

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