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

# Autentikasi

> Amankan permintaan API TokenLab Anda dengan API key

## API Key

Semua permintaan API TokenLab memerlukan API key.

Untuk endpoint yang kompatibel dengan OpenAI, kirim sebagai:

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

Untuk permintaan `/v1/messages` yang kompatibel dengan Anthropic, Anda juga dapat menggunakan:

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

## Mendapatkan API Key Anda

1. Masuk ke [TokenLab Dashboard](https://tokenlab.sh/dashboard) Anda
2. Buka **API Keys**
3. Buat key baru
4. Beri nama yang deskriptif
5. Salin segera karena hanya ditampilkan satu kali

<Warning>
  * Jangan pernah mengekspos API key dalam kode sisi klien
  * Jangan pernah melakukan commit API key ke version control
  * Gunakan environment variables atau secret manager
  * Rotasi key secara berkala
  * Hapus key yang tidak digunakan
</Warning>

## Menggunakan API Key

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

## Fitur API Key

### Batas Penggunaan

Anda dapat menetapkan batas penggunaan pada setiap API key:

| Pengaturan      | Deskripsi                                                      |
| --------------- | -------------------------------------------------------------- |
| **No Limit**    | Key menggunakan saldo akun Anda tanpa batasan                  |
| **Fixed Limit** | Key berhenti berfungsi setelah mencapai jumlah yang ditentukan |

### Prefix Key

Semua API key TokenLab diawali dengan `sk-`.

## Kompatibilitas Anthropic

Untuk endpoint `/v1/messages`, header bergaya Anthropic berfungsi sebagaimana mestinya:

```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>
  Gunakan `Authorization: Bearer ...` untuk endpoint yang kompatibel dengan OpenAI seperti `/v1/responses`, `/v1/chat/completions`, `/v1/models`, dan sebagian besar route TokenLab lainnya.
</Note>

## Respons Error

| Kode Status | Tipe                   | Kode                   | Deskripsi                          |
| ----------- | ---------------------- | ---------------------- | ---------------------------------- |
| 401         | `invalid_api_key`      | `invalid_api_key`      | API key tidak ada atau tidak valid |
| 401         | `expired_api_key`      | `expired_api_key`      | API key telah dicabut              |
| 402         | `insufficient_balance` | `insufficient_balance` | Saldo akun tidak mencukupi         |
| 402         | `quota_exceeded`       | `quota_exceeded`       | Batas penggunaan API key tercapai  |

Contoh:

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