Files
NianAIGC/app/api/v1/capabilities/route.ts
2026-07-14 12:59:07 +08:00

61 lines
2.1 KiB
TypeScript

import { getEffectiveImageEngine, getEvolinkImageSettings } from "@/lib/evolink/image-client";
import { getVisibleImageCapabilities } from "@/lib/jimeng/capabilities";
import { jsonOk } from "@/lib/server/api";
import { authenticatePublicApiRequest } from "@/lib/server/public-api-auth";
import { publicApiError } from "@/lib/server/public-api-response";
import { getSeedanceConfig } from "@/lib/seedance/client";
import { getBailianConfig } from "@/lib/bailian/client";
export const runtime = "nodejs";
export async function GET(request: Request) {
try {
authenticatePublicApiRequest(request);
const evolink = getEvolinkImageSettings();
const bailian = getBailianConfig();
return jsonOk({
capabilities: [
...getVisibleImageCapabilities().map((capability) => {
const engine = getEffectiveImageEngine(capability.id);
return {
id: capability.id,
label: capability.label,
kind: "image",
engine,
provider: engine === "bailian" ? "bailian" : engine === "evolink" ? "evolink" : "volcengine-visual",
reqKey: engine === "bailian" ? bailian.imageModel : engine === "evolink" ? evolink.model : capability.reqKey
};
}),
{
id: "video.generate",
label: "Seedance 视频生成",
kind: "video",
engine: "seedance",
provider: "seedance",
reqKey: getSeedanceConfig().model,
limits: {
durationSeconds: { min: 4, max: 15 },
ratios: ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "adaptive"],
resolutions: ["480p", "720p", "1080p"]
}
},
{
id: "video.generate.bailian",
label: "百炼图生视频",
kind: "video",
engine: "bailian",
provider: "bailian",
reqKey: bailian.videoModel,
limits: {
inputImages: { min: 1, max: 2 },
durationSeconds: { min: 2, max: 15 },
resolutions: ["720P", "1080P"]
}
}
]
});
} catch (error) {
return publicApiError(error);
}
}