{"base_url":"https://api.atiru.io","auth":{"type":"Bearer","header":"Authorization","description":"Use Authorization: Bearer <your_api_key>","x_api_key_note":"X-Api-Key header is also accepted."},"operations":[{"method":"GET","path":"/reference/allowed-content-types","summary":"List allowed upload MIME types","requires_auth":false},{"method":"GET","path":"/reference/for-agents","summary":"Agent discovery (base URL, auth, operations, error codes)","requires_auth":false},{"method":"GET","path":"/reference/openapi.json","summary":"OpenAPI 3.0 spec","requires_auth":false},{"method":"POST","path":"/files","summary":"Upload a file","requires_auth":true,"request_headers":"Content-Type, optional x-file-name","request_body_notes":"Binary body","response_notes":"201 with file object","rate_limit_per_min":30},{"method":"GET","path":"/files","summary":"List files","requires_auth":true,"response_notes":"200 with files array","rate_limit_per_min":60},{"method":"GET","path":"/files/:id","summary":"Get one file by id","requires_auth":true,"response_notes":"200 with file object","rate_limit_per_min":120},{"method":"DELETE","path":"/files/:id","summary":"Delete a file","requires_auth":true,"response_notes":"204","rate_limit_per_min":60},{"method":"POST","path":"/files/bulk-delete","summary":"Bulk delete files","requires_auth":true,"request_body_notes":"JSON { ids: string[] }","rate_limit_per_min":20},{"method":"GET","path":"/usage","summary":"Get usage stats (storage, file count, origin reads, image ops)","requires_auth":true,"rate_limit_per_min":60},{"method":"GET","path":"/logs","summary":"Get activity logs","requires_auth":true,"request_headers":"Optional query: page, limit","rate_limit_per_min":60},{"method":"GET","path":"/settings","summary":"Get user settings","requires_auth":true,"rate_limit_per_min":60},{"method":"PATCH","path":"/settings","summary":"Update settings","requires_auth":true,"request_body_notes":"JSON { custom_domain?, refresh_custom_domain?, max_upload_size_bytes? }","rate_limit_per_min":20},{"method":"POST","path":"/auth/register","summary":"Register a new user","requires_auth":false,"request_body_notes":"JSON { email, password, optional redirect_to }","response_notes":"201 with message; confirm email before login","rate_limit_per_min":10},{"method":"POST","path":"/auth/login","summary":"Login (email, password)","requires_auth":false,"request_body_notes":"JSON { email, password }","response_notes":"200 with session and user","rate_limit_per_min":15},{"method":"POST","path":"/auth/forgot-password","summary":"Request password reset email","requires_auth":false,"request_body_notes":"JSON { email, redirect_to }"},{"method":"POST","path":"/auth/api-keys","summary":"Create API key (JWT only)","requires_auth":true,"request_body_notes":"JSON { name? }","response_notes":"201 with key (shown once)","rate_limit_per_min":10},{"method":"GET","path":"/auth/api-keys","summary":"List API keys (JWT only)","requires_auth":true,"response_notes":"200 with api_keys array","rate_limit_per_min":30},{"method":"DELETE","path":"/auth/api-keys/:id","summary":"Revoke API key (JWT only)","requires_auth":true,"response_notes":"204","rate_limit_per_min":10}],"allowed_content_types":["image/jpeg","image/jpg","image/png","image/gif","image/webp","image/avif","image/bmp","image/tiff","image/x-icon","application/pdf","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","text/plain","text/csv","application/rtf","application/zip","application/x-zip-compressed","application/x-rar-compressed","application/vnd.rar","application/x-7z-compressed","application/gzip","application/x-gzip","audio/mpeg","audio/mp3","audio/wav","audio/x-wav","audio/ogg","audio/webm","audio/aac","audio/x-aac","audio/flac","video/mp4","video/webm","video/ogg","video/quicktime","video/x-msvideo","font/woff","font/woff2","application/font-woff","application/font-woff2","application/x-font-ttf","font/ttf","application/vnd.ms-fontobject","application/octet-stream"],"error_codes":[{"code":"MISSING_AUTH","http_status":401,"description":"Missing or invalid Authorization header"},{"code":"INVALID_OR_EXPIRED_TOKEN","http_status":401,"description":"Invalid or expired token"},{"code":"RATE_LIMITED","http_status":429,"description":"Too many requests"},{"code":"FILE_TOO_LARGE","http_status":413,"description":"File too large"},{"code":"FILE_NOT_FOUND","http_status":404,"description":"File not found"},{"code":"STORAGE_LIMIT_REACHED","http_status":403,"description":"Storage limit reached"},{"code":"FILE_COUNT_LIMIT_REACHED","http_status":403,"description":"File count limit reached"},{"code":"TRIAL_ENDED","http_status":403,"description":"Trial ended"},{"code":"EMAIL_NOT_VERIFIED","http_status":403,"description":"Email not verified; check your inbox for the confirmation link"},{"code":"INVALID_REQUEST","http_status":400,"description":"Invalid request"}]}