route.ts

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 参数

参数类型必填说明
promptstring生成提示词
modelstring模型 ID
providerstring提供商名称
typestring媒体类型: image, video, audio
inputImageUrlstring输入图片 URL(图生图/视频)
resolutionstring分辨率
aspectRatiostring宽高比

响应

成功 (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 连接信息,用于接收实时生成进度和结果。

← 返回目录