> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticación

> Protege tus solicitudes a la API de TokenLab con claves API

## Claves API

Todas las solicitudes a la API de TokenLab requieren una clave API.

Para los endpoints compatibles con OpenAI, envíala como:

```bash theme={null}
Authorization: Bearer sk-your-api-key
```

Para las solicitudes compatibles con Anthropic a `/v1/messages`, también puedes usar:

```bash theme={null}
x-api-key: sk-your-api-key
```

## Obtener tu clave API

1. Inicia sesión en tu [TokenLab Dashboard](https://tokenlab.sh/dashboard)
2. Abre **API Keys**
3. Crea una nueva clave
4. Asígnale un nombre descriptivo
5. Cópiala inmediatamente porque se muestra solo una vez

<Warning>
  * Nunca expongas claves API en código del lado del cliente
  * Nunca subas claves API al control de versiones
  * Usa variables de entorno o un gestor de secretos
  * Rota las claves periódicamente
  * Elimina las claves sin usar
</Warning>

## Uso de claves API

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.tokenlab.sh/v1/responses \
    -H "Authorization: Bearer $TOKENLAB_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "gpt-5.4",
      "input": "Hello!"
    }'
  ```

  ```python Python theme={null}
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ.get("TOKENLAB_API_KEY"),
      base_url="https://api.tokenlab.sh/v1"
  )
  ```

  ```javascript JavaScript theme={null}
  import OpenAI from 'openai';

  const client = new OpenAI({
    apiKey: process.env.TOKENLAB_API_KEY,
    baseURL: 'https://api.tokenlab.sh/v1'
  });
  ```
</CodeGroup>

## Características de las claves API

### Límites de uso

Puedes establecer un límite de uso en cada clave API:

| Configuración   | Descripción                                                             |
| --------------- | ----------------------------------------------------------------------- |
| **Sin límite**  | La clave usa el saldo de tu cuenta sin restricciones                    |
| **Límite fijo** | La clave deja de funcionar después de alcanzar la cantidad especificada |

### Prefijo de clave

Todas las claves API de TokenLab comienzan con `sk-`.

## Compatibilidad con Anthropic

Para el endpoint `/v1/messages`, el encabezado de estilo Anthropic funciona como se espera:

```bash theme={null}
curl https://api.tokenlab.sh/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
```

<Note>
  Usa `Authorization: Bearer ...` para endpoints compatibles con OpenAI como `/v1/responses`, `/v1/chat/completions`, `/v1/models` y la mayoría de las demás rutas de TokenLab.
</Note>

## Respuestas de error

| Código de estado | Tipo                   | Código                 | Descripción                                 |
| ---------------- | ---------------------- | ---------------------- | ------------------------------------------- |
| 401              | `invalid_api_key`      | `invalid_api_key`      | Falta la clave API o no es válida           |
| 401              | `expired_api_key`      | `expired_api_key`      | La clave API ha sido revocada               |
| 402              | `insufficient_balance` | `insufficient_balance` | El saldo de la cuenta es insuficiente       |
| 402              | `quota_exceeded`       | `quota_exceeded`       | Se alcanzó el límite de uso de la clave API |

Ejemplo:

```json theme={null}
{
  "error": {
    "message": "Invalid API key provided",
    "type": "invalid_api_key",
    "code": "invalid_api_key"
  }
}
```
