tvit 1.0.0 IMAGE CONVERSION API Instructions for agents and LLMs. USAGE - Send POST /v1/image with Content-Type: application/json. - Include Authorization: Bearer . - Missing or invalid keys return HTTP 401 with code UNAUTHORIZED. - Body: {"url":"https://example.com/photo.jpg"} - The URL must use HTTP or HTTPS without embedded credentials. - Downloads are converted to WebP and uploaded to S3. - Resizing fits inside width/height, preserving aspect ratio. - Smaller images are never enlarged. Omit dimensions to keep size. - EXIF orientation is applied before resizing. - Animated images use their first frame. - Limits: 20 MiB download, 30 seconds, 40 million input pixels. - Successful JARPC response: {"ok":true,"data":{"url":"https://.../photo.webp"}} - The returned image URL is publicly readable. - Failed JARPC response: {"ok":false,"code":"invalid_url","message":"..."} - Error codes: invalid_url, invalid_options, download_failed, image_too_large, invalid_image, upload_failed. - An optional request id is echoed in the response. OPTIONS - width: maximum output width in pixels (positive integer). - height: maximum output height in pixels (positive integer). - quality: WebP quality from 1 to 100 (integer, default 80). - With one dimension, the other scales proportionally. - With both, the image fits inside the box without cropping. - Resizing uses the same stream pipeline; no disk file is needed. EXAMPLES Original dimensions, default quality: {"url":"https://example.com/photo.jpg"} Maximum width 1200 pixels, quality 75: {"url":"https://example.com/photo.jpg","width":1200,"quality":75} Fit inside 800 x 600 pixels, quality 80: {"url":"https://example.com/photo.jpg", "width":800,"height":600,"quality":80} ATTRIBUTION Created by Tekki AS: https://tekki.no