import { NextResponse, NextRequest } from "next/server"; import { sunoApi } from "@/lib/SunoApi"; import { corsHeaders } from "@/lib/utils"; export const dynamic = "force-dynamic"; export async function POST(req: NextRequest) { if (req.method === 'POST') { try { const body = await req.json(); const { clip_id } = body; if (!clip_id) { return new NextResponse(JSON.stringify({ error: 'Clip id is required' }), { status: 400, headers: { 'Content-Type': 'application/json', ...corsHeaders } }); } const audioInfo = await (await sunoApi).concatenate(clip_id); return new NextResponse(JSON.stringify(audioInfo), { status: 200, headers: { 'Content-Type': 'application/json', ...corsHeaders } }); } catch (error: any) { console.error('Error generating concatenating audio:', error.response.data); if (error.response.status === 402) { return new NextResponse(JSON.stringify({ error: error.response.data.detail }), { status: 402, headers: { 'Content-Type': 'application/json', ...corsHeaders } }); } return new NextResponse(JSON.stringify({ error: 'Internal server error' }), { status: 500, headers: { 'Content-Type': 'application/json', ...corsHeaders } }); } } else { return new NextResponse('Method Not Allowed', { headers: { Allow: 'POST', ...corsHeaders }, status: 405 }); } } export async function OPTIONS(request: Request) { return new Response(null, { status: 200, headers: corsHeaders }); }