OmniRoute/docs/i18n/ms/API_REFERENCE.md

441 lines
16 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Rujukan API
🌐 **Languages:** 🇺🇸 [English](../../API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](../pt-BR/API_REFERENCE.md) | 🇪🇸 [Español](../es/API_REFERENCE.md) | 🇫🇷 [Français](../fr/API_REFERENCE.md) | 🇮🇹 [Italiano](../it/API_REFERENCE.md) | 🇷🇺 [Русский](../ru/API_REFERENCE.md) | 🇨🇳 [中文 (简体)](../zh-CN/API_REFERENCE.md) | 🇩🇪 [Deutsch](../de/API_REFERENCE.md) | 🇮🇳 [हिन्दी](../in/API_REFERENCE.md) | 🇹🇭 [ไทย](../th/API_REFERENCE.md) | 🇺🇦 [Українська](../uk-UA/API_REFERENCE.md) | 🇸🇦 [العربية](../ar/API_REFERENCE.md) | 🇯🇵 [日本語](../ja/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](../vi/API_REFERENCE.md) | 🇧🇬 [Български](../bg/API_REFERENCE.md) | 🇩🇰 [Dansk](../da/API_REFERENCE.md) | 🇫🇮 [Suomi](../fi/API_REFERENCE.md) | 🇮🇱 [עברית](../he/API_REFERENCE.md) | 🇭🇺 [Magyar](../hu/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](../id/API_REFERENCE.md) | 🇰🇷 [한국어](../ko/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](../ms/API_REFERENCE.md) | 🇳🇱 [Nederlands](../nl/API_REFERENCE.md) | 🇳🇴 [Norsk](../no/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](../pt/API_REFERENCE.md) | 🇷🇴 [Română](../ro/API_REFERENCE.md) | 🇵🇱 [Polski](../pl/API_REFERENCE.md) | 🇸🇰 [Slovenčina](../sk/API_REFERENCE.md) | 🇸🇪 [Svenska](../sv/API_REFERENCE.md) | 🇵🇭 [Filipino](../phi/API_REFERENCE.md)
Rujukan lengkap untuk semua titik akhir API OmniRoute.
---
## Jadual Kandungan
- [Chat Completions](#chat-completions)
- [Embeddings](#embeddings)
- [Image Generation](#image-generation)
- [List Models](#list-models)
- [Compatibility Endpoints](#compatibility-endpoints)
- [Semantic Cache](#semantic-cache)
- [Dashboard & Management](#dashboard--management)
- [Request Processing](#request-processing)
- [Authentication](#authentication)
---
## Selesai Sembang
```bash
POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}
```
### Pengepala Tersuai
| Pengepala | Arah | Penerangan |
| ------------------------ | ------------ | ------------------------------------------- |
| `X-OmniRoute-No-Cache` | Permintaan | Tetapkan kepada `true` untuk memintas cache |
| `X-OmniRoute-Progress` | Permintaan | Tetapkan kepada `true` untuk acara kemajuan |
| `Idempotency-Key` | Permintaan | Kekunci dedup (tetingkap 5s) |
| `X-Request-Id` | Permintaan | Kunci pelupusan alternatif |
| `X-OmniRoute-Cache` | Maklum balas | `HIT` atau `MISS` (bukan penstriman) |
| `X-OmniRoute-Idempotent` | Maklum balas | `true` jika dinyahduplikasi |
| `X-OmniRoute-Progress` | Maklum balas | `enabled` jika penjejakan kemajuan pada |
---
## Pembenaman
```bash
POST /v1/embeddings
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "nebius/Qwen/Qwen3-Embedding-8B",
"input": "The food was delicious"
}
```
Pembekal yang tersedia: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA.
```bash
# List all embedding models
GET /v1/embeddings
```
---
## Penjanaan Imej
```bash
POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "openai/dall-e-3",
"prompt": "A beautiful sunset over mountains",
"size": "1024x1024"
}
```
Pembekal tersedia: OpenAI (DALL-E), xAI (Grok Image), Together AI (FLUX), Fireworks AI.
```bash
# List all image models
GET /v1/images/generations
```
---
## Senaraikan Model
```bash
GET /v1/models
Authorization: Bearer your-api-key
→ Returns all chat, embedding, and image models + combos in OpenAI format
```
---
## Titik Akhir Keserasian
| Kaedah | Laluan | Format |
| -------- | --------------------------- | ----------------------- |
| POS | `/v1/chat/completions` | OpenAI |
| POS | `/v1/messages` | Antroppik |
| POS | `/v1/responses` | Respons OpenAI |
| POS | `/v1/embeddings` | OpenAI |
| POS | `/v1/images/generations` | OpenAI |
| DAPATKAN | `/v1/models` | OpenAI |
| POS | `/v1/messages/count_tokens` | Antroppik |
| DAPATKAN | `/v1beta/models` | Gemini |
| POS | `/v1beta/models/{...path}` | Gemini menjanaKandungan |
| POS | `/v1/api/chat` | Ollama |
### Laluan Penyedia Khusus
```bash
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
```
Awalan pembekal ditambah secara automatik jika tiada. Model tidak sepadan mengembalikan `400`.
---
## Cache Semantik
```bash
# Get cache stats
GET /api/cache
# Clear all caches
DELETE /api/cache
```
Contoh jawapan:
```json
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
```
---
## Papan Pemuka & Pengurusan
### Pengesahan
| Titik akhir | Kaedah | Penerangan |
| ----------------------------- | -------------- | -------------------------- |
| `/api/auth/login` | POS | Log masuk |
| `/api/auth/logout` | POS | Log keluar |
| `/api/settings/require-login` | DAPATKAN/LETAK | Togol log masuk diperlukan |
### Pengurusan Pembekal
| Titik akhir | Kaedah | Penerangan |
| ---------------------------- | -------------------- | --------------------------- |
| `/api/providers` | DAPATKAN/POS | Senaraikan / buat pembekal |
| `/api/providers/[id]` | DAPATKAN/LETAK/PADAM | Urus pembekal |
| `/api/providers/[id]/test` | POS | Sambungan pembekal ujian |
| `/api/providers/[id]/models` | DAPATKAN | Senaraikan model pembekal |
| `/api/providers/validate` | POS | Sahkan konfigurasi pembekal |
| `/api/provider-nodes*` | Pelbagai | Pengurusan nod pembekal |
| `/api/provider-models` | DAPATKAN/POST/PADAM | Model tersuai |
### Aliran OAuth
| Titik akhir | Kaedah | Penerangan |
| -------------------------------- | -------- | --------------------- |
| `/api/oauth/[provider]/[action]` | Pelbagai | OAuth khusus pembekal |
### Penghalaan & Konfigurasi
| Titik akhir | Kaedah | Penerangan |
| --------------------- | ------------ | ------------------------------------- |
| `/api/models/alias` | DAPATKAN/POS | Alias model |
| `/api/models/catalog` | DAPATKAN | Semua model mengikut pembekal + jenis |
| `/api/combos*` | Pelbagai | Pengurusan kombo |
| `/api/keys*` | Pelbagai | Pengurusan kunci API |
| `/api/pricing` | DAPATKAN | Harga model |
### Penggunaan & Analitis
| Titik akhir | Kaedah | Penerangan |
| --------------------------- | -------- | --------------------------- |
| `/api/usage/history` | DAPATKAN | Sejarah penggunaan |
| `/api/usage/logs` | DAPATKAN | Log penggunaan |
| `/api/usage/request-logs` | DAPATKAN | Log peringkat permintaan |
| `/api/usage/[connectionId]` | DAPATKAN | Penggunaan setiap sambungan |
### Tetapan
| Titik akhir | Kaedah | Penerangan |
| ------------------------------- | -------------- | ------------------------------------- |
| `/api/settings` | DAPATKAN/LETAK | Tetapan umum |
| `/api/settings/proxy` | DAPATKAN/LETAK | Konfigurasi proksi rangkaian |
| `/api/settings/proxy/test` | POS | Uji sambungan proksi |
| `/api/settings/ip-filter` | DAPATKAN/LETAK | Senarai dibenarkan/senarai sekatan IP |
| `/api/settings/thinking-budget` | DAPATKAN/LETAK | Belanjawan token penaakulan |
| `/api/settings/system-prompt` | DAPATKAN/LETAK | Gesaan sistem global |
### Pemantauan
| Titik akhir | Kaedah | Penerangan |
| ------------------------ | -------------- | --------------------------- |
| `/api/sessions` | DAPATKAN | Penjejakan sesi aktif |
| `/api/rate-limits` | DAPATKAN | Had kadar setiap akaun |
| `/api/monitoring/health` | DAPATKAN | Pemeriksaan kesihatan |
| `/api/cache` | DAPATKAN/PADAM | Statistik cache / kosongkan |
### Sandaran & Eksport/Import
| Titik akhir | Kaedah | Penerangan |
| --------------------------- | -------- | -------------------------------------------------------- |
| `/api/db-backups` | DAPATKAN | Senaraikan sandaran yang tersedia |
| `/api/db-backups` | LETAK | Buat sandaran manual |
| `/api/db-backups` | POS | Pulihkan daripada sandaran khusus |
| `/api/db-backups/export` | DAPATKAN | Muat turun pangkalan data sebagai fail .sqlite |
| `/api/db-backups/import` | POS | Muat naik fail .sqlite untuk menggantikan pangkalan data |
| `/api/db-backups/exportAll` | DAPATKAN | Muat turun sandaran penuh sebagai arkib .tar.gz |
### Penyegerakan Awan
| Titik akhir | Kaedah | Penerangan |
| ---------------------- | -------- | ------------------------- |
| `/api/sync/cloud` | Pelbagai | Operasi penyegerakan awan |
| `/api/sync/initialize` | POS | Mulakan penyegerakan |
| `/api/cloud/*` | Pelbagai | Pengurusan awan |
### Alat CLI
| Titik akhir | Kaedah | Penerangan |
| ---------------------------------- | -------- | ---------------------- |
| `/api/cli-tools/claude-settings` | DAPATKAN | Status CLI Claude |
| `/api/cli-tools/codex-settings` | DAPATKAN | Status Codex CLI |
| `/api/cli-tools/droid-settings` | DAPATKAN | Status Droid CLI |
| `/api/cli-tools/openclaw-settings` | DAPATKAN | Status OpenClaw CLI |
| `/api/cli-tools/runtime/[toolId]` | DAPATKAN | Masa jalan CLI generik |
Respons CLI termasuk: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
### Had Ketahanan & Kadar
| Titik akhir | Kaedah | Penerangan |
| ----------------------- | -------------- | ------------------------------------ |
| `/api/resilience` | DAPATKAN/LETAK | Dapatkan/kemas kini profil ketahanan |
| `/api/resilience/reset` | POS | Tetapkan semula pemutus litar |
| `/api/rate-limits` | DAPATKAN | Status had kadar setiap akaun |
| `/api/rate-limit` | DAPATKAN | Konfigurasi had kadar global |
### Evals
| Titik akhir | Kaedah | Penerangan |
| ------------ | ------------ | ------------------------------------------ |
| `/api/evals` | DAPATKAN/POS | Senaraikan suite eval / penilaian jalankan |
### Dasar
| Titik akhir | Kaedah | Penerangan |
| --------------- | ------------------- | --------------------- |
| `/api/policies` | DAPATKAN/POST/PADAM | Urus dasar penghalaan |
### Pematuhan
| Titik akhir | Kaedah | Penerangan |
| --------------------------- | -------- | -------------------------------- |
| `/api/compliance/audit-log` | DAPATKAN | Log audit pematuhan (N terakhir) |
### v1beta (Serasi Gemini)
| Titik akhir | Kaedah | Penerangan |
| -------------------------- | -------- | ------------------------------------ |
| `/v1beta/models` | DAPATKAN | Senaraikan model dalam format Gemini |
| `/v1beta/models/{...path}` | POS | Gemini `generateContent` titik akhir |
Titik akhir ini mencerminkan format API Gemini untuk pelanggan yang mengharapkan keserasian SDK Gemini asli.
### API Dalaman / Sistem
| Titik akhir | Kaedah | Penerangan |
| --------------- | -------- | ------------------------------------------------------------ |
| `/api/init` | DAPATKAN | Semakan permulaan aplikasi (digunakan pada larian pertama) |
| `/api/tags` | DAPATKAN | Tag model yang serasi dengan Ollama (untuk pelanggan Ollama) |
| `/api/restart` | POS | Pencetus pelayan anggun mulakan semula |
| `/api/shutdown` | POS | Cetuskan penutupan pelayan yang anggun |
> **Nota:** Titik akhir ini digunakan secara dalaman oleh sistem atau untuk keserasian pelanggan Ollama. Mereka biasanya tidak dipanggil oleh pengguna akhir.
---
## Transkripsi Audio
```bash
POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data
```
Transkripsikan fail audio menggunakan Deepgram atau AssemblyAI.
**Permintaan:**
```bash
curl -X POST http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer your-api-key" \
-F "file=@recording.mp3" \
-F "model=deepgram/nova-3"
```
**Jawapan:**
```json
{
"text": "Hello, this is the transcribed audio content.",
"task": "transcribe",
"language": "en",
"duration": 12.5
}
```
**Pembekal yang disokong:** `deepgram/nova-3`, `assemblyai/best`.
**Format yang disokong:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
---
## Keserasian Ollama
Untuk pelanggan yang menggunakan format API Ollama:
```bash
# Chat endpoint (Ollama format)
POST /v1/api/chat
# Model listing (Ollama format)
GET /api/tags
```
Permintaan diterjemahkan secara automatik antara Ollama dan format dalaman.
---
## Telemetri
```bash
# Get latency telemetry summary (p50/p95/p99 per provider)
GET /api/telemetry/summary
```
**Jawapan:**
```json
{
"providers": {
"claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
"github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
}
}
```
---
## Belanjawan
```bash
# Get budget status for all API keys
GET /api/usage/budget
# Set or update a budget
POST /api/usage/budget
Content-Type: application/json
{
"keyId": "key-123",
"limit": 50.00,
"period": "monthly"
}
```
---
## Ketersediaan Model
```bash
# Get real-time model availability across all providers
GET /api/models/availability
# Check availability for a specific model
POST /api/models/availability
Content-Type: application/json
{
"model": "claude-sonnet-4-5-20250929"
}
```
---
## Pemprosesan Permintaan
1. Pelanggan menghantar permintaan kepada `/v1/*`
2. Pengendali laluan memanggil `handleChat`, `handleEmbedding`, `handleAudioTranscription` atau `handleImageGeneration`
3. Model telah diselesaikan (pembekal langsung/model atau alias/kombo)
4. Bukti kelayakan dipilih daripada DB tempatan dengan penapisan ketersediaan akaun
5. Untuk sembang: `handleChatCore` — pengesanan format, terjemahan, semakan cache, semakan idempotensi
6. Pelaksana pembekal menghantar permintaan huluan
7. Respons diterjemahkan kembali kepada format pelanggan (sembang) atau dikembalikan seperti sedia ada (benam/imej/audio)
8. Penggunaan / pembalakan direkodkan
9. Fallback terpakai pada ralat mengikut peraturan kombo
Rujukan seni bina penuh: [link](ARCHITECTURE.md)
---
## Pengesahan
- Laluan papan pemuka (`/dashboard/*`) gunakan kuki `auth_token`
- Log masuk menggunakan cincang kata laluan yang disimpan; sandar kepada `INITIAL_PASSWORD`
- `requireLogin` boleh togol melalui `/api/settings/require-login`
- `/v1/*` laluan secara pilihan memerlukan kunci API Pembawa apabila `REQUIRE_API_KEY=true`