{"service":"CalcWhale Utility APIs","status":"ok","endpoints":{"GET /api/v1/og":"OG/social-card image (PNG). Params: title, subtitle, footer, theme (dark|light|midnight|forest|crimson), align (left|center), width, height.","POST /api/v1/pdf/merge":"{ files: [base64, ...] } → { file: base64 }","POST /api/v1/pdf/split":"{ file: base64, ranges?: [\"1-3\",\"4-\"] } → { files: [base64, ...] }","POST /api/v1/pdf/watermark":"{ file: base64, text, opacity?, fontSize?, color? } → { file: base64 }","POST /api/v1/pdf/from-markdown":"{ markdown, title?, theme? } → { file: base64 }","GET /api/v1/qr":"QR code (PNG/SVG). Params: data, size, margin, format (png|svg), ecl (L|M|Q|H), dark, light.","GET /api/v1/screenshot":"Web page screenshot (PNG/JPEG). Params: url, width, height, scale (1-3), fullPage, format (png|jpeg), quality, delay (ms, max 5000).","GET /api/v1/convert":"Unit conversion (486 pairs, 14 categories). Params: value, from, to. ?list=true for the catalog.","GET /api/v1/ics":"Event → .ics calendar file. Params: title, start, end, location, description, url. POST { events: [...] } for up to 100.","GET /api/v1/words":"Word solver (ENABLE list, 172k words). Params: letters (unscramble, ? wildcards) or pattern (a??le), minLen, maxLen, limit.","GET /api/v1/placeholder":"Placeholder image (PNG/SVG). Params: width, height, bg, fg, text, format.","POST /api/v1/pdf/invoice":"{ invoiceNumber, date, seller, buyer, items: [{description, quantity, unitPrice}], taxRate?, discount?, currency?, notes?, accent? } → { file: base64, total }","POST /api/v1/data/convert":"{ from: csv|json|xlsx, to: csv|json|xlsx, data (text, or base64 for xlsx), delimiter?, sheet? } → { output, rows, encoding }","GET /api/v1/palette":"Image → dominant color palette. ?url= (public) or POST { image: base64 } (PNG/JPEG). Params: count (2-12).","POST /api/v1/resume-check":"{ file: base64 .docx } → structural ATS-safety check (tables, columns, images, text boxes, header/footer contact info). Real parse, not a fake score."},"limits":{"requestBody":"4.5 MB","filesPerMerge":20,"outputsPerSplit":50,"screenshotNavTimeout":"20 s"}}