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); } }