route.ts
基本信息
- 类型: API 路由
- 路径:
./src/app/api/media-generate/route.ts - 路由:
/api/media-generate
概述
媒体生成接口。支持生成图片、视频、音频等多媒体内容,使用可插拔的媒体生成提供商。
HTTP 方法
- GET: 获取可用模型和用户信息
- POST: 提交媒体生成任务
GET - 获取可用模型和用户信息
响应
成功 (200)
{
"available": true,
"imageModels": [
{ "id": "model_id", "name": "Model Name" }
],
"videoModels": [...],
"audioModels": [...],
"credits": {
"remaining": 10,
"daily": 20
},
"canGenerate": true
}
未授权 (401)
{
"error": "Unauthorized"
}
POST - 提交媒体生成任务
Body 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| prompt | string | 是 | 生成提示词 |
| model | string | 是 | 模型 ID |
| provider | string | 是 | 提供商名称 |
| type | string | 是 | 媒体类型: image, video, audio |
| inputImageUrl | string | 否 | 输入图片 URL(图生图/视频) |
| resolution | string | 否 | 分辨率 |
| aspectRatio | string | 否 | 宽高比 |
响应
成功 (200)
{
"success": true,
"taskId": "task_xxx",
"socketAccessToken": "token_xxx",
"webSocketUrl": "wss://...",
"provider": "provider_name"
}
错误
未授权 (401)
{
"error": "Unauthorized"
}
用户被标记 (403)
{
"error": "Your account has been flagged. Media generation is disabled."
}
积分不足 (403)
{
"error": "No generation credits remaining. Credits reset daily."
}
参数缺失 (400)
{
"error": "Missing required fields: prompt, model, provider, type"
}
提供商不存在 (404)
{
"error": "Provider \"xxx\" not found"
}
提供商未启用 (400)
{
"error": "Provider \"xxx\" is not enabled"
}
服务器错误 (500)
{
"error": "错误信息"
}
依赖
next/server- Next.js 服务器组件@/lib/auth- 认证@/lib/db- Prisma 数据库客户端@/lib/plugins/media-generators- 媒体生成插件
权限
- 需要登录
- 被标记用户无法使用
- 需要足够的生成积分
积分系统
- 每个用户有每日生成限额
- 每次生成消耗 1 积分
- 积分每日重置
WebSocket 实时更新
生成任务创建后会返回 WebSocket 连接信息,用于接收实时生成进度和结果。