app/api/ 下的 Next.js API 路由中。前端透過這些路由呼叫模型服務商,伺服器端則負責注入 Key、選擇介面位址和調整請求參數。
這些路由是應用程式的內部介面,主要供前端使用,參數可能隨版本變動。如果你要在其他程式中呼叫,請以儲存庫中的原始碼為準。
通用慣例
請求標頭
通用參數
與模型相關的路由都接受以下參數:存取驗證
設定了CODE 時,除了 /api/auth 和 /api/umami/script 以外,其他路由都要求請求帶有有效的 ja_session Cookie,否則會傳回:
錯誤格式
發生錯誤時,路由會傳回對應的 HTTP 狀態碼和統一格式的錯誤:message一律是簡體中文原文,不受X-App-Locale影響。前端會把已知的錯誤訊息翻譯成目前的介面語言後再顯示。- 模型服務商傳回的原始錯誤訊息會原樣轉送,前端不會翻譯。
- 等待模型服務商超過 60 秒時,非串流請求會傳回
504和「上游接口请求超时,请稍后重试。」
串流回應
開啟串流輸出時,路由會直接轉送上游的 OpenAI 相容 Server-Sent Events 串流,Content-Type 為 text/event-stream。關閉時,則傳回上游的完整 JSON 回應。
串流輸出超過 90 秒沒有新資料時,伺服器端會在串流中送出一則錯誤事件,然後結束連線:
路由清單
POST /api/analyze
模型會傳回形如
{"tokens": [{"word", "pos", "furigana"}]} 的結構化 JSON。
POST /api/translate
譯文語言由
X-App-Locale 決定,並保留原文的段落和換行結構。
POST /api/word-detail
單字詳解會傳回
chineseTranslation、dictionaryForm、explanation、conjugation、example、exampleTranslation、pos 和 furigana 欄位。短語詳解會另外傳回 category 和 breakdown。
POST /api/image-to-text
POST /api/chat
伺服器端會在訊息清單前加入日語學習助手的系統提示詞。
POST /api/tts
成功時會傳回 Base64 編碼的音訊:
GET /api/daily-sentence
傳回當天(日本時間)的今日一句,包含date、text、tokens 和四種語言的 translation。回應的 Cache-Control 有效期限到日本時間午夜零時。伺服器沒有可用的 Key 或產生失敗時會傳回 503,前端則改用內建備用句。
/api/auth
GET:傳回{ "requiresAuth": boolean, "authenticated": boolean }。POST:請求本文為{ "password": "..." }。密碼正確時傳回{ "success": true }並寫入工作階段 Cookie,錯誤時傳回401。
