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。
