> ## 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.

# Autenticação

> Proteja suas requisições à API TokenLab com chaves de API

## Chaves de API

Todas as requisições à API TokenLab exigem uma chave de API.

Para endpoints compatíveis com OpenAI, envie-a como:

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

Para requisições compatíveis com Anthropic em `/v1/messages`, você também pode usar:

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

## Obtendo sua chave de API

1. Faça login no seu [Painel TokenLab](https://tokenlab.sh/dashboard)
2. Abra **API Keys**
3. Crie uma nova chave
4. Dê a ela um nome descritivo
5. Copie-a imediatamente, porque ela é exibida apenas uma vez

<Warning>
  * Nunca exponha chaves de API em código client-side
  * Nunca faça commit de chaves de API no controle de versão
  * Use variáveis de ambiente ou um gerenciador de segredos
  * Faça a rotação das chaves periodicamente
  * Exclua chaves não utilizadas
</Warning>

## Usando chaves de 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>

## Recursos das chaves de API

### Limites de uso

Você pode definir um limite de uso para cada chave de API:

| Configuração    | Descrição                                                   |
| --------------- | ----------------------------------------------------------- |
| **Sem limite**  | A chave usa o saldo da sua conta sem restrições             |
| **Limite fixo** | A chave para de funcionar após atingir o valor especificado |

### Prefixo da chave

Todas as chaves de API da TokenLab começam com `sk-`.

## Compatibilidade com Anthropic

Para o endpoint `/v1/messages`, o header no estilo Anthropic funciona conforme esperado:

```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>
  Use `Authorization: Bearer ...` para endpoints compatíveis com OpenAI, como `/v1/responses`, `/v1/chat/completions`, `/v1/models` e a maioria das outras rotas da TokenLab.
</Note>

## Respostas de erro

| Código de status | Tipo                   | Código                 | Descrição                                    |
| ---------------- | ---------------------- | ---------------------- | -------------------------------------------- |
| 401              | `invalid_api_key`      | `invalid_api_key`      | Chave de API ausente ou inválida             |
| 401              | `expired_api_key`      | `expired_api_key`      | A chave de API foi revogada                  |
| 402              | `insufficient_balance` | `insufficient_balance` | O saldo da conta é insuficiente              |
| 402              | `quota_exceeded`       | `quota_exceeded`       | O limite de uso da chave de API foi atingido |

Exemplo:

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