Tera Router
Gateway API

Model & Routing

Empat cara menulis field model — provider/model, alias, chain, dan suffix reasoning.

Field model di Tera Router lebih ekspresif daripada API biasa. Router membacanya dengan urutan prioritas tetap:

UrutanBentukContohArti
1chain:<nama>chain:heavy-codingJalankan rantai routing bernama itu
2Nama aliasfastPakai alias pool yang cocok
3provider/modelanthropic/claude-sonnet-4Target eksplisit ke satu provider
4Nama polosheavy-codingCari chain bernama itu, lalu alias

provider/model hanya valid kalau provider adalah slug dari katalog bawaan atau custom provider yang aktif.

Alias pool

Alias memetakan satu nama pendek ke beberapa target provider/model yang dicoba berurutan. Kelola lewat halaman Chains → alias atau API:

curl -X PUT http://localhost:8080/v1/models/alias \
  -H "Authorization: Bearer <jwt-dashboard>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "fast",
    "context_window": 128000,
    "active": true,
    "targets": [
      { "provider": "groq", "model": "llama-3.3-70b", "active": true },
      { "provider": "openai", "model": "gpt-4o-mini", "active": true }
    ]
  }'

Setelah itu, model: "fast" di gateway berarti "coba Groq dulu, kalau gagal OpenAI".

Chain

Chain mengatur langkah routing yang lebih kaya — strategi per-chain, langkah berurutan, dan fallback penutup:

curl -X POST http://localhost:8080/v1/chains \
  -H "Authorization: Bearer <jwt-dashboard>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "heavy-coding",
    "strategy": "priority",
    "fallback_provider": "openrouter",
    "fallback_model": "anthropic/claude-sonnet-4",
    "enabled": true,
    "steps": [
      { "provider": "anthropic", "model": "claude-sonnet-4" },
      { "provider": "openai", "model": "gpt-4o", "active": false }
    ]
  }'

Strategi yang tersedia:

  • priority — ikuti urutan langkah; pindah ke langkah berikutnya saat langkah aktif gagal.
  • round-robin — putar antar langkah untuk membagi beban.
  • load-balanced — sebar request merata.

Panggil dengan model: "chain:heavy-coding" (atau polos heavy-coding, karena nama chain dicari lebih dulu di bentuk ke-4).

Setiap langkah punya flag active (default true). Langkah yang nonaktif tetap ada di chain tapi dilewati router — berguna untuk mengistirahatkan provider tanpa kehilangan posisinya. Chain tanpa langkah aktif dan tanpa fallback menjawab 400.

Suffix reasoning

Tambahkan tingkat penalaran dalam kurung di akhir nama model — router yang menerjemahkannya ke parameter reasoning tujuan:

{ "model": "openai/gpt-4o-mini(high)" }
{ "model": "anthropic/claude-sonnet-4(8192)" }
LevelToken budget
none0
minimal512
low1.024
medium8.192
high24.576
xhigh32.768
max128.000

Tulis angka langsung (misal (8192)) untuk budget eksplisit.

Kombinasi dengan allowlist key

Pattern allowlist pada key/plan mendukung wildcard * di akhir, dan mencocokkan semua bentuk nama: model polos, provider/model, nama alias, maupun chain:<nama>. Contoh anthropic/* mengizinkan semua model Anthropic; chain:* mengizinkan semua chain.

Allowlist saling memotong

Model yang diizinkan adalah irisan antara allowlist key dan allowlist plan-nya. Key tidak bisa melonggarkan batasan plan.

Di halaman ini