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

# Panduan Migrasi

> Pindahkan OpenAI, Anthropic, Gemini, dan beban kerja media ke TokenLab dengan perubahan kecil yang aman untuk produksi.

TokenLab adalah multi-format: Anda dapat mempertahankan klien yang kompatibel dengan OpenAI, panggilan Messages asli Anthropic, panggilan REST asli Gemini, dan titik akhir media dalam bentuk aslinya. Migrasi yang paling aman adalah tidak menerjemahkan setiap beban kerja ke dalam satu format universal. Pilih rute yang memiliki perilaku yang dibutuhkan aplikasi Anda.

## Pemetaan Rute

| Beban kerja yang ada    | URL dasar TokenLab           | Titik akhir utama                       | Catatan migrasi                                                                                                |
| ----------------------- | ---------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| OpenAI Chat Completions | `https://api.tokenlab.sh/v1` | `/chat/completions`                     | Perubahan terkecil untuk chat dan pemanggilan fungsi yang kompatibel dengan OpenAI                             |
| OpenAI Responses        | `https://api.tokenlab.sh/v1` | `/responses`                            | Gunakan ketika aplikasi Anda bergantung pada input, alat, atau penanganan output yang spesifik untuk Responses |
| Anthropic SDK           | `https://api.tokenlab.sh`    | `/v1/messages`                          | Jangan tambahkan `/v1` ke URL dasar SDK                                                                        |
| Gemini REST             | `https://api.tokenlab.sh`    | `/v1beta/models/:model:generateContent` | Pertahankan bidang asli Gemini di rute Gemini                                                                  |
| Generasi media          | `https://api.tokenlab.sh/v1` | `/images`, `/videos`, `/music`, `/3d`   | Temukan model dengan `recommended_for` dan harapkan polling asinkron di mana didokumentasikan                  |
| Manajemen dan penagihan | `https://api.tokenlab.sh/v1` | `/management/...`                       | Gunakan token manajemen untuk penggunaan sisi server dan rekonsiliasi penagihan                                |

## Migrasi yang Kompatibel dengan OpenAI

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

client = OpenAI(
    api_key="sk-your-tokenlab-key",
    base_url="https://api.tokenlab.sh/v1",
)

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "Hello from TokenLab"}],
)
```

Pertahankan kode retry, timeout, dan streaming yang ada, tetapi validasi ID model dengan `GET /v1/models` sebelum lalu lintas produksi. Untuk generasi gambar, kirim `model` secara eksplisit dan baca panduan gambar karena model gambar berbeda lebih dari model chat.

## Migrasi Anthropic

```python theme={null}
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-your-tokenlab-key",
    base_url="https://api.tokenlab.sh",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain TokenLab in one sentence."}],
)
```

Gunakan `/v1/messages` untuk penggunaan alat asli Claude, alur pemikiran, dan semantik pesan Anthropic. Jangan terjemahkan bidang yang hanya ada di Anthropic melalui Chat Completions kecuali Anda sengaja ingin mengubah perilaku menjadi kompatibel dengan OpenAI.

## Migrasi Gemini

```bash theme={null}
curl "https://api.tokenlab.sh/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Authorization: Bearer sk-your-tokenlab-key" \
  -H "Content-Type: application/json" \
  -d '{"contents":[{"parts":[{"text":"Hello"}]}]}'
```

Pertahankan alat bawaan Gemini, referensi API File, konten yang di-cache, deklarasi fungsi, dan bagian konten asli di `/v1beta` ketika aplikasi Anda bergantung pada perilaku asli Gemini.

## Migrasi Media

1. Kuery `GET /v1/models?recommended_for=image|video|music|3d`.
2. Baca `tokenlab.public_contract_summary` dalam respons daftar dan `tokenlab.public_contract` lengkap di mana tersedia.
3. Kirim `model` secara eksplisit, terutama untuk titik akhir gambar.
4. Simpan `task_id`, `poll_url`, titik akhir, model, dan ID pekerjaan Anda sendiri untuk pekerjaan asinkron.
5. Rekonsiliasi biaya melalui catatan penggunaan dan `billing_transaction_id`, bukan ID tugas penyedia.

Beban kerja media memerlukan rencana peluncuran mereka sendiri karena latensi, retry, dan aset akhir berperilaku berbeda dari chat completions.

## Rencana Peluncuran Produksi

| Fase                    | Tujuan                                                                                           | Pemeriksaan                                                                 |
| ----------------------- | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- |
| 1. Inventaris           | Daftar titik akhir, model, bidang permintaan, perilaku streaming/asinkron, dan pemilik penagihan | Tidak ada bidang penyedia yang tersembunyi yang dianggap publik             |
| 2. Pilot satu rute      | Pindahkan satu titik akhir dan satu keluarga model                                               | Bentuk respons, biaya, dan log sesuai harapan                               |
| 3. Bayangan atau sampel | Bandingkan output yang dipilih dengan penyedia sebelumnya                                        | Kualitas dan latensi yang terlihat oleh pengguna dapat diterima             |
| 4. Peluncuran bertahap  | Tingkatkan lalu lintas berdasarkan kunci, organisasi, atau fitur flag                            | Pantau `4xx`, `5xx`, latensi, keseimbangan, dan pekerjaan asinkron duplikat |
| 5. Pembersihan          | Hapus jalur penyedia lama hanya setelah penggunaan stabil                                        | Jalur rollback dan buku panduan dukungan didokumentasikan                   |

## Perangkap Migrasi

* Jangan letakkan setiap model di belakang satu jalur OpenAI Chat Completions jika aplikasi Anda membutuhkan perilaku asli Anthropic, Gemini, atau Responses.
* Jangan menganggap default gambar lama. Kirim `model` secara eksplisit.
* Jangan coba ulang permintaan pembuatan asinkron tanpa memeriksa apakah tugas sudah dibuat.
* Jangan ungkapkan metadata routing penyedia di log atau UI Anda.
* Jangan bandingkan penagihan dengan ID tugas penyedia. Gunakan catatan penggunaan TokenLab.

## Referensi API

| Topik                        | Referensi                                                      |
| ---------------------------- | -------------------------------------------------------------- |
| API Multi-Format             | [API Multi-Format](/id/guides/api-formats)                     |
| OpenAI SDK                   | [OpenAI SDK](/id/integrations/openai-sdk)                      |
| Anthropic SDK                | [Anthropic SDK](/id/integrations/anthropic-sdk)                |
| Gemini Native                | [Gemini Native API](/id/api-reference/gemini/generate-content) |
| Generasi Gambar              | [Generasi Gambar](/id/guides/image-generation)                 |
| Pekerjaan Asinkron & Polling | [Pekerjaan Asinkron & Polling](/id/guides/async-jobs-polling)  |
