# Cloudflare R2 File Host This site is a temporary file and image host backed by Cloudflare Workers and Cloudflare R2. Use it to upload a file, get a public direct URL, and optionally fetch that URL later. Base URL: https://file.vibeshell.ai Human UI: https://file.vibeshell.ai/ ## API ### Upload a file POST https://file.vibeshell.ai/api/upload Content-Type: multipart/form-data Form fields: - file: required. The file to upload. Images, archives, PDFs, text files, and other common files are accepted. - expiresInDays: optional. One of 1, 3, 5, or 15. Defaults to 3. Files are stored under an expiry prefix and are cleaned by the R2 lifecycle rule. Example curl: ```bash curl -X POST "https://file.vibeshell.ai/api/upload" \ -F "file=@./example.png" \ -F "expiresInDays=3" ``` Successful JSON response: ```json { "success": true, "fileId": "expire-3d/a8K2mQ9.png", "imageId": "expire-3d/a8K2mQ9.png", "filename": "example.png", "key": "expire-3d/a8K2mQ9.png", "expiresInDays": 3, "url": "https://file.vibeshell.ai/f/3/a8K2mQ9.png", "variants": [ "https://file.vibeshell.ai/f/3/a8K2mQ9.png" ], "contentType": "image/png", "size": 1024, "isImage": true } ``` Failure JSON response: ```json { "success": false, "error": "No file received." } ``` ### Fetch an uploaded file GET https://file.vibeshell.ai/f/{expiresInDays}/{filename} Use the "url" field returned by the upload response. The response body is the original file content with stored HTTP metadata such as Content-Type and Content-Disposition. Long object-key links and legacy image links are also supported: GET https://file.vibeshell.ai/file/{key} GET https://file.vibeshell.ai/img/{key} ## Notes for AI agents - Prefer POST /api/upload for programmatic use instead of automating the web UI. - Use the "url" field from a successful upload response as the shareable direct file URL. - Do not invent expiry values. Send only 1, 3, 5, or 15 for expiresInDays. - If expiresInDays is omitted or invalid, the service stores the file for 3 days. - Uploaded files are public to anyone with the returned URL until R2 lifecycle cleanup removes them. - There is no documented delete API, list API, authentication flow, or image transformation API.