
# Obtener una clave de API

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

Devuelve los metadatos de una clave de API. La clave sin procesar nunca se devuelve.

`last_used_at` se escribe como máximo una vez por minuto, por lo que puede retrasarse hasta un minuto respecto a la última solicitud; `last_used_ip` es la red /24 (IPv4) o /48 (IPv6) de esa solicitud, nunca la dirección completa. El entorno recibe un evento `api_key.expiry_warned` 30, 7 y 1 días antes de `expires_at` (una vez por umbral; las claves revocadas y las que están en rotación no reciben ninguno).

## Solicitud

| Parámetro | En | Descripción |
|---|---|---|
| `key_id` | ruta | Identificador de la clave de API (`key_…`). |

## Respuesta

`200 OK`. El objeto de clave.

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

## Errores

| HTTP | `code` | Cuándo |
|---|---|---|
| 401 | `unauthenticated` | Falta la clave, no es válida o está revocada. |
| 403 | `insufficient_permissions` | La clave no tiene el permiso necesario. |
| 404 | `not_found` | La clave no existe en este entorno. |

## Ejemplo

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