# Autenticación

> Envía tu clave de API como token Bearer o en x-api-key. Las claves son de una organización y pueden tener presupuestos y límites de modelos.


Toda solicitud necesita una clave de API. Envíala en uno de estos dos encabezados:

| Encabezado | Formato |
|---|---|
| `Authorization` | `Bearer nh_live_...` |
| `x-api-key` | `nh_live_...` (lo que envían los SDK de Anthropic) |

```bash test
curl https://api.notholy.com/v1/models -H "x-api-key: $NOTHOLY_API_KEY"
```

## Claves

Las claves se crean en la consola, en **Claves de API**. Cada clave pertenece a una organización y a un espacio de trabajo. El secreto se muestra una sola vez y se guarda únicamente como hash.

Una clave puede tener:

- Un presupuesto total y un presupuesto diario en USD. Una solicitud que superaría el presupuesto recibe `402`.
- Una lista de modelos permitidos. Los demás modelos reciben `403 key_not_allowed`.
- Una fecha de vencimiento.
- Un límite de solicitudes por minuto menor que el de la organización.

La revocación de una clave se aplica desde la siguiente solicitud.

## Claves en el código

Lee la clave desde el entorno. No la subas al repositorio. Si una clave se filtra, revócala en la consola y crea una nueva.

> [!WARNING]
> Nunca pongas una clave en código que corre en el cliente. Llama a la API desde tu servidor o tu terminal y guarda las claves en variables de entorno o en un almacén de secretos.

```python test
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])

print([m.id for m in client.models.list()])
```

## Errores

| Estado | Código | Significado |
|---|---|---|
| 401 | `invalid_api_key` | Clave ausente, incorrecta, revocada o vencida |
| 403 | `key_not_allowed` | La clave no puede usar este modelo |
| 403 | `account_suspended` | La organización está suspendida. Contacta a soporte |
| 403 | `consent_required` | Quien creó la clave rechazó o retiró el consentimiento para el procesamiento en Estados Unidos y China. Puede aceptarlo en la consola |

## Siguientes pasos

- [Modelos](/es/getting-started/models)
- [Organizaciones y roles](/es/account/organizations)
