import { NextResponse } from "next/server"; export async function GET() { return NextResponse.json({ name: "Songs2YT API", version: "1.0", authentication: "Authorization: Bearer ", requirements: ["Pro subscription", "YouTube account connected"], rateLimit: "60 requests per minute per account (plus any approved bonus)", guidance: { recommended: "For most jobs (especially 5+ audio files): POST /api/v1/upload per file, then POST /api/v1/jobs with the returned paths", batch: "POST /api/v1/jobs/batch is for small packs only. Large multipart bodies may fail with 'failed to parse body as FormData'", }, endpoints: [ { method: "POST", path: "/api/v1/upload", description: "Upload a single image or audio file (use for two-step flow)", body: "multipart/form-data: file, type (image|audio)", }, { method: "POST", path: "/api/v1/jobs", description: "Create a video job from uploaded file paths (recommended for large batches)", body: "application/json: { imagePath, items[] }", }, { method: "POST", path: "/api/v1/jobs/batch", description: "One-shot batch for small packs only; large uploads may fail FormData parsing; prefer upload + jobs", body: "multipart/form-data: image, audio[] (repeatable), metadata? (JSON string)", }, { method: "GET", path: "/api/v1/playlists", description: "List YouTube playlists for the authenticated Pro account", }, { method: "POST", path: "/api/v1/playlists", description: "Create a YouTube playlist", body: "application/json: { title, description?, privacy? (public|unlisted|private) }", }, { method: "GET", path: "/api/v1/jobs", description: "List recent jobs", query: "limit (default 20, max 100)", }, { method: "GET", path: "/api/v1/jobs/:id", description: "Get job status and item details", }, ], docs: "/dashboard/api-docs", }); }