import { jsonError, jsonOk, readJsonBody } from "@/lib/server/api"; import { requireAppSession } from "@/lib/server/auth/current-user"; import { requestOrigin } from "@/lib/server/runtime"; import { resolvePlatformUsageContext } from "@/lib/server/usage-context"; import { quoteImageGeneration, type SubmitImageJobInput } from "@/lib/server/generation-service"; import { quoteVideoGeneration, type SubmitVideoJobInput } from "@/lib/server/video-generation-service"; export const runtime = "nodejs"; export async function POST(request: Request) { try { const session = await requireAppSession(); const body = await readJsonBody>(request); const usageContext = await resolvePlatformUsageContext(session); const kind = body.kind === "video" || body.capability === "video.generate" ? "video" : "image"; const quote = kind === "video" ? await quoteVideoGeneration({ ...body, ownerId: session.user.id, usageContext } as SubmitVideoJobInput, requestOrigin(request)) : await quoteImageGeneration({ ...body, capability: "image.generate", ownerId: session.user.id, usageContext } as SubmitImageJobInput, requestOrigin(request)); return jsonOk({ quote }); } catch (error) { return jsonError(error, 500, { request, source: "api.billing.quote" }); } }