Panduan Integrasi API TeamoRouter
TeamoRouter mendukung berbagai format API yang kompatibel, termasuk OpenAI, Google Gemini, dan Anthropic. Arahkan base URL SDK resmi ke TeamoRouter dan biarkan kode aplikasi Anda tidak berubah. Anda dapat memanggil Claude / Gemini / GPT dan keluarga model lainnya melalui satu gateway.
- Base URL:
https://api.teamorouter.com - Autentikasi: API Key (
sk-teamo-...) - Protokol: format native Anthropic (
/v1/messages), format kompatibel OpenAI (/v1/chat/completions), OpenAI Responses API (/v1/responses, khusus model GPT), format native Gemini (/v1beta/models/{model}:generateContent), dan pembuatan gambar (/v1/images)
Ganti sk-teamo-xxxxxx dengan key Anda sendiri. Jaga kerahasiaan key dan jangan pernah meng-commit-nya ke repositori kode.
1. Autentikasi
Pilih format yang kompatibel sesuai model yang Anda gunakan:
Setiap format menggunakan header autentikasi yang berbeda. Pilih header sesuai protokol:
| Protokol | Header |
|---|---|
| Anthropic | x-api-key: sk-teamo-xxxxxx + anthropic-version: 2023-06-01 |
| OpenAI | Authorization: Bearer sk-teamo-xxxxxx |
| Gemini | Authorization: Bearer sk-teamo-xxxxxx |
2. Model yang tersedia
Ambil daftar model lengkap secara real time dengan GET /v1/models:
curl https://api.teamorouter.com/v1/models \
-H "Authorization: Bearer sk-teamo-xxxxxx"
Model yang saat ini tersedia (contoh):
| Penyedia | ID model |
|---|---|
| Anthropic | claude-fable-5-1, claude-opus-5, claude-fable-5, claude-sonnet-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5 |
| OpenAI | gpt-6-astra,gpt-6-sol,gpt-6-luna,gpt-5.6-sol,gpt-5.6-terra,gpt-5.6-luna,gpt-5.5,gpt-5.4,gpt-5.4-mini,gpt-image-2 |
gemini-3.8-flash, gemini-3.7-flash, gemini-3.6-flash, gemini-3.5-flash-lite,gemini-3.1-pro-preview, gemini-3.5-flash, gemini-3.1-flash-lite-preview |
|
| DeepSeek | deepseek-flash (DeepSeek V4.1 Flash), deepseek-flash-free (gratis), deepseek-v4-flash-vision-exp, deepseek-v4-pro, deepseek-v4-flash, deepseek-v4-flash-free (gratis) |
| GLM | glm-5.3-flash, glm-5.3-flash-free (gratis), glm-5.3, glm-5.2 |
| Grok | grok-4.6 |
3. Format native Anthropic
Endpoint: POST /v1/messages
3.1 Permintaan dasar
curl https://api.teamorouter.com/v1/messages \
-H "x-api-key: sk-teamo-xxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-fable-5-1",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Introduce yourself in one sentence"}
]
}'
Contoh respons:
{
"id": "msg_01KxDE...",
"type": "message",
"role": "assistant",
"model": "claude-fable-5-1",
"content": [{"type": "text", "text": "I am Claude..."}],
"stop_reason": "end_turn",
"usage": {"input_tokens": 159, "output_tokens": 34}
}
3.2 Streaming dengan SSE
Tambahkan "stream": true. Respons berupa text/event-stream:
curl https://api.teamorouter.com/v1/messages \
-H "x-api-key: sk-teamo-xxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-fable-5-1",
"max_tokens": 1024,
"stream": true,
"messages": [{"role": "user", "content": "Write a short poem"}]
}'
Urutan event: message_start -> content_block_start -> beberapa event content_block_delta -> content_block_stop -> message_delta -> message_stop.
3.3 Python SDK dengan anthropic
from anthropic import Anthropic
client = Anthropic(
api_key="sk-teamo-xxxxxx",
base_url="https://api.teamorouter.com",
)
resp = client.messages.create(
model="claude-fable-5-1",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.content[0].text)
4. Format kompatibel OpenAI
Endpoint: POST /v1/chat/completions (Chat Completions) dan POST /v1/responses (Responses API, khusus model GPT)
4.1 Permintaan Chat Completions dasar
curl https://api.teamorouter.com/v1/chat/completions \
-H "Authorization: Bearer sk-teamo-xxxxxx" \
-H "content-type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
Respons mengikuti struktur standar OpenAI chat.completion:
{
"object": "chat.completion",
"model": "gpt-5.6-sol",
"choices": [
{"index": 0, "message": {"role": "assistant", "content": "Hello!"}, "finish_reason": "stop"}
],
"usage": {"prompt_tokens": 214, "completion_tokens": 3, "total_tokens": 217}
}
4.2 Python SDK dengan openai
from openai import OpenAI
client = OpenAI(
api_key="sk-teamo-xxxxxx",
base_url="https://api.teamorouter.com/v1",
)
resp = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
4.3 Streaming
Tambahkan "stream": true. TeamoRouter mengembalikan chunk SSE standar OpenAI dalam format data: {...} dan diakhiri dengan data: [DONE].
4.4 Permintaan Responses API dasar
Jika aplikasi Anda sudah menggunakan OpenAI Responses API, panggil /v1/responses secara langsung:
curl https://api.teamorouter.com/v1/responses \
-H "Authorization: Bearer sk-teamo-xxxxxx" \
-H "content-type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"input": "Introduce TeamoRouter in one sentence"
}'
/v1/responses hanya mendukung model GPT. Permintaan untuk Claude / Gemini mengembalikan 400. Gunakan /v1/messages untuk Claude dan format native Gemini untuk Gemini.
4.5 Python SDK dengan openai Responses
from openai import OpenAI
client = OpenAI(
api_key="sk-teamo-xxxxxx",
base_url="https://api.teamorouter.com/v1",
)
resp = client.responses.create(
model="gpt-5.6-sol",
input="Introduce TeamoRouter in one sentence",
)
print(resp.output_text)
4.6 Streaming Responses API
Tambahkan "stream": true untuk menerima event streaming standar OpenAI Responses API.
4.7 Fast mode
Endpoint kompatibel OpenAI milik TeamoRouter mendukung Fast mode (sebelumnya Priority processing). Tambahkan ini ke permintaan Chat Completions atau Responses API Anda:
"service_tier": "fast"
Contoh Python:
from openai import OpenAI
client = OpenAI(
api_key="sk-teamo-xxxxxx",
base_url="https://api.teamorouter.com/v1",
)
resp = client.responses.create(
model="gpt-5.6-sol",
input="Analyze this requirement for me",
service_tier="fast",
)
print(resp.output_text)
Contoh JavaScript:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "sk-teamo-xxxxxx",
baseURL: "https://api.teamorouter.com/v1",
});
const resp = await client.responses.create({
model: "gpt-5.6-sol",
input: "Analyze this requirement for me",
service_tier: "fast",
});
console.log(resp.output_text);
Nilai lama masih berfungsi:
"service_tier": "priority"
fast adalah nilai yang direkomendasikan saat ini; nilai lama priority masih berfungsi dan berperilaku identik. Keduanya berlaku untuk semua model seri GPT yang mendukung Fast mode. Dengan Fast mode aktif, gpt-5.6-sol berjalan hingga 2.5x lebih cepat daripada Standard. Fast mode ditagih dengan tarif 2x tarif standar. Untuk GPT-5.6 dan model sebelumnya, field service_tier pada objek respons mungkin masih mengembalikan "priority" — ini memang diharapkan.
5. Format native Gemini
Endpoint: POST /v1beta/models/{model}:generateContent
5.1 Permintaan dasar
curl https://api.teamorouter.com/v1beta/models/gemini-3.5-flash:generateContent \
-H "Authorization: Bearer sk-teamo-xxxxxx" \
-H "content-type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "Introduce yourself in one sentence"}]}
]
}'
Contoh respons:
{
"candidates": [
{
"content": {"role": "model", "parts": [{"text": "I am Gemini..."}]},
"finishReason": "STOP"
}
],
"usageMetadata": {"promptTokenCount": 12, "candidatesTokenCount": 22, "totalTokenCount": 34}
}
5.2 Streaming dengan SSE
Gunakan streamGenerateContent dan tambahkan alt=sse:
curl "https://api.teamorouter.com/v1beta/models/gemini-3.5-flash:streamGenerateContent?alt=sse" \
-H "Authorization: Bearer sk-teamo-xxxxxx" \
-H "content-type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "Write a short poem"}]}
]
}'
5.3 Variabel lingkungan
Jika alat atau SDK Anda mendukung Base URL Gemini kustom, konfigurasikan seperti ini:
export GOOGLE_GEMINI_BASE_URL="https://api.teamorouter.com"
export GEMINI_API_KEY="sk-teamo-xxxxxx"
export GEMINI_API_KEY_AUTH_MECHANISM="bearer"
SDK Gemini yang berbeda mungkin menggunakan nama field yang berbeda untuk endpoint kustom. Nama yang umum meliputi base_url, baseURL, apiEndpoint, atau variabel lingkungan. Aturan intinya: arahkan Base URL ke https://api.teamorouter.com dan gunakan API Key TeamoRouter Anda.
6. Pembuatan gambar (GPT Image 2)
Model gambar gpt-image-2 menggunakan endpoint /v1/images yang terpisah dan melakukan autentikasi dengan Authorization: Bearer.
6.1 Membuat gambar
Endpoint: POST /v1/images/generations
curl https://api.teamorouter.com/v1/images/generations \
-H "Authorization: Bearer sk-teamo-xxxxxx" \
-H "content-type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "An orange cat typing on a keyboard, illustration style"
}'
Contoh respons. data[0].b64_json adalah gambar berenkode Base64:
{
"created": 1752345600,
"data": [
{"b64_json": "iVBORw0KGgo..."}
]
}
Setel timeout ke 300 detik. Model pembuat gambar bisa membutuhkan waktu respons lebih lama, dan timeout yang lebih singkat dapat gagal.
6.2 Mengedit gambar
Endpoint: POST /v1/images/edits
Unggah gambar sumber sebagai multipart/form-data dan sertakan instruksi edit:
curl https://api.teamorouter.com/v1/images/edits \
-H "Authorization: Bearer sk-teamo-xxxxxx" \
-F model="gpt-image-2" \
-F image="@photo.png" \
-F prompt="Replace the background with a starry sky"
Endpoint ini kompatibel dengan OpenAI Images API.
7. Menghubungkan alat agen
Claude Code menggunakan protokol Anthropic, Codex menggunakan protokol OpenAI, dan Gemini CLI menggunakan protokol Gemini.
Cukup arahkan variabel lingkungan Base URL dan API Key ke TeamoRouter. Anda tidak perlu memodifikasi alat itu sendiri.
Claude Code (protokol Anthropic):
export ANTHROPIC_BASE_URL="https://api.teamorouter.com"
export ANTHROPIC_API_KEY="sk-teamo-xxxxxx"
Alat dengan protokol OpenAI (Chat Completions / Responses API):
export OPENAI_BASE_URL="https://api.teamorouter.com/v1"
export OPENAI_API_KEY="sk-teamo-xxxxxx"
Gemini CLI:
export GOOGLE_GEMINI_BASE_URL="https://api.teamorouter.com"
export GEMINI_API_KEY="sk-teamo-xxxxxx"
export GEMINI_API_KEY_AUTH_MECHANISM="bearer"
8. FAQ
Mendapat 401 / autentikasi gagal?
Pertama, verifikasi pemetaan protokol ke header: Anthropic menggunakan x-api-key; OpenAI / Gemini menggunakan Authorization: Bearer; endpoint native Gemini juga menerima x-goog-api-key. Lalu pastikan key lengkap, diawali sk-teamo-, tanpa spasi berlebih, dan belum dihapus di dasbor. Periksa juga format base_url: SDK OpenAI memerlukan /v1; SDK Anthropic tidak.
Memanggil Claude melalui format OpenAI menghasilkan error, biaya lebih tinggi, atau performa lebih buruk?
Gunakan protokol native Anthropic (/v1/messages) untuk model Claude sebisa mungkin. Claude Code dan alat agen lainnya harus dikonfigurasi dengan protokol Anthropic. Memanggil Claude melalui format yang kompatibel dengan OpenAI dapat menghilangkan prompt cache, thinking, dan kemampuan lainnya, sehingga biaya naik dan kualitas turun. Cara ini hanya cocok untuk skenario chat sederhana. /v1/responses tidak mendukung Claude / Gemini dan mengembalikan 400.
Model tidak tersedia?
Gunakan GET /v1/models untuk mengambil daftar model real time terlebih dahulu. Periksa ejaan ID model, gunakan huruf kecil, dan perhatikan perbedaan - dan .. Pastikan juga endpoint sesuai dengan model.
Timeout atau token pertama lambat?
Model besar seperti Opus / Fable bisa membutuhkan beberapa detik hingga puluhan detik untuk token pertama saat melakukan reasoning. Ini tidak berarti permintaan gagal. Di produksi, setel "stream": true agar latensi terasa lebih baik dan tingkatkan timeout baca klien. Server mendukung respons hingga 600 detik.
Keamanan key:
Simpan key di variabel lingkungan atau secret manager. Jangan menanamkannya langsung di kode, meng-commit-nya ke Git, atau menyertakannya dalam frontend / klien publik. Jika Anda curiga key bocor, segera hapus di dasbor dan buat penggantinya.