
# API anahtarını iptal et

`POST /v1/api-keys/{key_id}:revoke` · izin `api-keys:write` · isteğe bağlı `Idempotency-Key`

Anahtarı hemen iptal eder. İptal geri alınamaz; anahtar en geç 30 saniye içinde reddedilir. Örtüşmesi bitmemiş döndürülmüş anahtar da hemen iptal edilir. Panoda oluşturulan anahtar ve ondan döndürülen her anahtar yalnız kendisi ya da panoda iptal edilebilir (`permission_escalation`).

## İstek

| Parametre | Yer | Açıklama |
|---|---|---|
| `key_id` | yol | API anahtarı kimliği (`key_…`). |

Gövde:

Gövde isteğe bağlıdır; verilmezse tüm varsayılanlar uygulanır.

| Alan | Tür | Açıklama |
|---|---|---|
| `reason` | string | İsteğe bağlı. `manual` (varsayılan) ya da `leaked`. |

## Yanıt

`200 OK`. `revoked_at` ve `revoke_reason` dolu anahtar nesnesi.

```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": "2026-10-02T10:00:00Z",
  "revoke_reason": "leaked"
}
```

## Hatalar

| HTTP | `code` | Ne zaman |
|---|---|---|
| 401 | `unauthenticated` | Anahtar eksik, geçersiz ya da iptal edilmiş. |
| 403 | `insufficient_permissions` | Anahtarda gerekli izin yok. |
| 403 | `permission_escalation` | İstek, bir anahtara çağıran anahtardan fazla izin, daha geniş ağ aralığı ya da daha geç son kullanma verirdi; `restricted` bir anahtar kendi izinlerinin ötesinde oluşturmaya, döndürmeye ya da iptale çalışıyor; ya da başka anahtar panoda oluşturulan anahtarı döndürmeye ya da iptale çalışıyor. |
| 404 | `not_found` | Anahtar bu ortamda yok. |
| 409 | `conflict` | Anahtar zaten iptal edilmiş. |
| 422 | `validation_failed` | Gövde geçersiz: `reason` `manual` ya da `leaked` değil. |

## Örnek

```bash
curl -X POST "https://api.eu.keenauth.com/v1/api-keys/key_0000000000000000000000001z:revoke" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"leaked"}'
```
