Files
2026-05-29 12:32:02 +08:00

46 lines
1.6 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";
export const runtime = "nodejs";
export async function GET(request: Request) {
try {
authenticatePublicApiRequest(request);
const evolink = getEvolinkImageSettings();
return jsonOk({
capabilities: [
...getVisibleImageCapabilities().map((capability) => {
const engine = getEffectiveImageEngine(capability.id);
return {
id: capability.id,
label: capability.label,
kind: "image",
engine,
provider: engine === "evolink" ? "evolink" : "volcengine-visual",
reqKey: 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"]
}
}
]
});
} catch (error) {
return publicApiError(error);
}
}