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

# Autentikasi

> Cara mengautentikasi dengan Wappfy API menggunakan API key atau token JWT.

# Autentikasi

Wappfy API mendukung dua metode autentikasi. Semua permintaan harus menyertakan salah satunya.

## API Key (direkomendasikan)

Kirimkan API key Anda di header `X-Api-Key`:

```bash theme={null}
curl https://api.wappfy.io/api/instances \
  -H "X-Api-Key: wappfy_sk_abc123def456..."
```

### Membuat API key

API key dibuat melalui dashboard atau API. Key terikat pada pengguna dan memiliki izin yang sama dengan akun pengguna tersebut.

```bash theme={null}
curl -X POST https://api.wappfy.io/api/api-keys \
  -H "Authorization: Bearer YOUR_SUPABASE_JWT" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Production Key" }'
```

<Warning>
  Nilai key hanya ditampilkan sekali saat pembuatan. Simpan dengan aman.
</Warning>

## Bearer Token (JWT Supabase)

Kirimkan token akses Supabase di header `Authorization`:

```bash theme={null}
curl https://api.wappfy.io/api/instances \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
```

Token JWT memiliki masa berlaku singkat dan harus diperbarui secara berkala. Biasanya digunakan oleh dashboard frontend, bukan untuk integrasi server-ke-server.

## Praktik terbaik keamanan

<AccordionGroup>
  <Accordion title="Gunakan API key untuk server-ke-server">
    API key tidak kedaluwarsa dan lebih mudah dikelola untuk integrasi backend.
  </Accordion>

  <Accordion title="Rotasi key secara berkala">
    Jika key terkompromi, hapus dan buat yang baru.
  </Accordion>

  <Accordion title="Selalu gunakan HTTPS">
    Semua permintaan API harus menggunakan HTTPS. Permintaan HTTP akan ditolak.
  </Accordion>

  <Accordion title="Jangan ekspos key di kode frontend">
    API key hanya boleh digunakan di kode sisi server, jangan pernah di JavaScript sisi klien.
  </Accordion>
</AccordionGroup>

## Respons error

| Status | Deskripsi                                    |
| ------ | -------------------------------------------- |
| `401`  | Token autentikasi tidak ada atau tidak valid |
| `403`  | Izin tidak mencukupi untuk resource ini      |
