Skip to main content
不要在浏览器端直接调用 Tapapi 并暴露 API Key。Next.js 项目建议用 Route Handler 或 Server Action 做后端代理。
不要把 TAPAPI_API_KEY 暴露成 NEXT_PUBLIC_ 变量。下面示例默认运行在服务端 Route Handler 中,浏览器只调用你自己的 /api/* 接口。

推荐结构

浏览器只调用你的业务接口;Tapapi API Key 只保存在服务端环境变量里。

环境变量

通用 Helper

建议先把 Tapapi 请求、错误解析和模型白名单放到一个服务端工具文件里:
生产环境不要完全信任前端传来的 modelsizenmessagesprompt。至少做服务端白名单、长度限制和用户权限校验。

文本代理

前端只调用自己的接口:

流式文本代理

流式接口不要先 response.json(),成功时直接转发 Tapapi 的 SSE body:
前端解析 SSE 时读取每个 chunk 的 choices[0].delta.content,并跳过空内容、保活事件和没有普通文本 delta 的 chunk。

Responses 代理

/v1/chat/completions 是 Next.js 代理的默认主线。需要 Responses API 时,可以单独开一个路由,不要和 chat parser 共用:
Responses 的返回结构和 Chat Completions 不完全一样。接入前先用真实模型测试字段,再写入生产解析逻辑。

图片代理

生产环境建议后端拿到图片后立刻转存到自己的 S3、R2、OSS、COS 或其他对象存储,再把自有 URL 返回给前端。批量生成时记录请求 n、实际 data.length 和成功转存数量;如果响应包含 metadata.tapapi_partial,按实际返回张数处理。

视频代理

视频 API 当前不是默认全量开放能力。只有控制台可见模型、价格已确认、账号有权限时,才适合在 Next.js 后端代理里开放。 推荐流程:
视频请求字段会随模型变化,不要把某个模型的 secondssizeaspect_ratio、参考图字段直接复用到所有视频模型。更多见 视频 API任务与输出

生产增强

不要这样做

浏览器代码、Source Map、网络面板和错误日志都可能泄露 API Key。

下一步