# storage.to > Free, fast file sharing. No signup required. ## Overview storage.to allows users to share files and collections of files via simple URLs. All files are accessible programmatically without authentication. ## Single File Access Given a file URL like `https://storage.to/abc123xyz`: | Endpoint | Method | Description | |----------|--------|-------------| | `/abc123xyz` | GET | Human-readable download page | | `/r/abc123xyz` | GET | Direct download (redirects to file) | | `/r/abc123xyz` | HEAD | File metadata without downloading | ### HEAD Response Headers ``` Content-Type: image/png Content-Length: 1048576 Content-Disposition: attachment; filename="photo.png" X-File-Id: abc123xyz X-Expires-At: 2026-02-02T12:00:00Z ``` ### Example ```bash # Download file directly curl -L https://storage.to/r/abc123xyz -o photo.png # Get file metadata curl -I https://storage.to/r/abc123xyz ``` ## Collection Access Given a collection URL like `https://storage.to/c/FQfuCp3NP`: | Endpoint | Method | Description | |----------|--------|-------------| | `/c/FQfuCp3NP` | GET | Human-readable collection page | | `/c/FQfuCp3NP` | GET + `Accept: application/json` | JSON manifest (content negotiation) | | `/c/FQfuCp3NP.json` | GET | JSON manifest with all file URLs | **Recommended for AI/tools:** Send `Accept: application/json` header to get JSON manifest directly from the collection URL. ### JSON Manifest Response ```json { "id": "FQfuCp3NP", "file_count": 3, "total_size": 3145728, "human_size": "3 MB", "expires_at": "2026-02-02T12:00:00Z", "files": [ { "id": "abc123xyz", "filename": "photo.png", "size": 1048576, "mime_type": "image/png", "raw_url": "https://storage.to/r/abc123xyz" }, { "id": "def456uvw", "filename": "document.pdf", "size": 2097152, "mime_type": "application/pdf", "raw_url": "https://storage.to/r/def456uvw" } ] } ``` ### Example ```bash # Get collection manifest (using Accept header - recommended) curl -H "Accept: application/json" https://storage.to/c/FQfuCp3NP # Get collection manifest (using .json suffix) curl https://storage.to/c/FQfuCp3NP.json # Download all files in a collection curl -s -H "Accept: application/json" https://storage.to/c/FQfuCp3NP | jq -r '.files[].raw_url' | xargs -I {} curl -LOJ {} ``` ## URL Patterns - File IDs: 9 alphanumeric characters (e.g., `abc123xyz`) - Collection IDs: 9 alphanumeric characters, prefixed with `/c/` - Raw file access: prefix with `/r/` - Collection JSON: append `.json` ## Rate Limits - 60 requests per minute per IP address - No authentication required ## Notes - Files expire after 7 days by default - Check `expires_at` field or `X-Expires-At` header - All downloads are served via CDN for fast global access