One request to upload.
Zero to serve.
REST API for files. No SDK, no buckets, no egress fees. Globally distributed. Claude and ChatGPT connected over MCP.
# upload $ curl -X POST /files/uploads \ -H "Authorization: Bearer $TOKEN" \ -d '{"path":"assets/logo.svg"}' # share it $ curl -X POST /files/share \ -d '{"path":"assets/logo.svg"}' → /s/k7f2m · expires 24h
30 seconds to first upload
POST /auth/challenge → POST /auth/verify
POST /files/uploads → PUT <signed-url> → POST /files/uploads/complete
POST /files/share → GET /s/:token
Everything under /files
One resource namespace. Standard HTTP methods. Paths are your filesystem.
Store
Organize
Share
No SDK. Just HTTP.
# initiate upload curl -X POST https://storage.liteio.dev/files/uploads \ -H "Authorization: Bearer $TOKEN" \ -d '{"path":"data/config.json","content_type":"application/json"}' # download (follows 302 redirect) curl -L https://storage.liteio.dev/files/data/config.json \ -H "Authorization: Bearer $TOKEN"
// initiate upload, then PUT to the presigned URL const { upload_url } = await fetch("https://storage.liteio.dev/files/uploads", { method: "POST", headers: { Authorization: `Bearer ${TOKEN}` }, body: JSON.stringify({ path: "data/config.json" }), }).then(r => r.json()); await fetch(upload_url, { method: "PUT", body: file });
import requests # initiate upload res = requests.post( "https://storage.liteio.dev/files/uploads", headers={"Authorization": f"Bearer {TOKEN}"}, json={"path": "data/config.json"}, ) upload_url = res.json()["upload_url"] # upload directly to object store requests.put(upload_url, data=file_bytes)
// initiate upload body := strings.NewReader(`{"path":"data/config.json"}`) req, _ := http.NewRequest("POST", "https://storage.liteio.dev/files/uploads", body) req.Header.Set("Authorization", "Bearer "+token) resp, _ := http.DefaultClient.Do(req) // parse upload_url from response, PUT file there
Your files in Claude and ChatGPT.
8 MCP tools built in. Connect once, then read, write, search, and share files from any MCP client.
Settings → Integrations → Add
https://storage.liteio.dev/mcpSettings → Connected apps
https://storage.liteio.dev/mcp• 2025-03-20.md · 4.2 KB
• 2025-03-18.md · 2.1 KB
• ideas.txt · 890 B
storage.liteio.dev/s/m9x2kExpires in 24 hours.
Direct transfer. No proxy.
File bytes never touch our servers. Auth is inline, data goes direct to the object store.
Drop it into any stack.
App file uploads
Get a presigned URL from the API, upload from the browser to the object store. No server proxy. Works with React, Vue, Svelte, vanilla JS.
CI/CD artifacts
Push build outputs, deploy bundles, and test reports from GitHub Actions or any CI. One curl per artifact. Scoped API keys for each pipeline.
AI workflows
Let Claude or ChatGPT save research, code snippets, and generated files directly to your storage. Search and share them by asking.
Secure by default. No passwords stored.
sk_* format, 90-day TTL.Start building.
One request to upload. Zero egress to serve. MCP connection in a minute.
https://storage.liteio.dev
Storage is a file storage API. Upload a file in one HTTP request, serve it globally with zero egress fees. No SDK required — every endpoint is plain HTTP with JSON.
## Quickstart
Three steps from zero to your first uploaded file.
### 1. Get a token
Register with your Ed25519 public key or request a magic link via email. Both return a bearer token.
/files. Standard HTTP methods. Paths are your filesystem.
### Store
POST/files/uploadsInitiate a file upload (returns presigned PUT URL)POST/files/uploads/completeConfirm upload after PUT completesGET/files/{path}Download a file (302 redirect to presigned URL)HEAD/files/{path}Get file metadata without downloadingDELETE/files/{path}Delete a file or folderGET/files?prefix={folder}List files in a folderGET/files/search?q={query}Search files by namePOST/files/moveRename or move a fileGET/files/statsGet total file count and bytes usedPOST/files/shareCreate a temporary public link (default: 1h, max: 7d)GET/s/{token}Access a shared file (no auth required)POST/auth/challengeRequest an Ed25519 challenge noncePOST/auth/verifyVerify signature and get session tokenPOST/auth/magicSend a magic link to an email addressPOST/auth/registerRegister a new account with Ed25519 public keyPOST/auth/logoutInvalidate current sessionPOST/auth/keysCreate a scoped API keyGET/auth/keysList all API keysDELETE/auth/keys/{id}Revoke an API keystorage_readRead a file's contentsstorage_writeWrite or overwrite a filestorage_listList files in a folderstorage_searchSearch files by namestorage_shareCreate a temporary public linkstorage_moveMove or rename a filestorage_deleteDelete a filestorage_statsGet storage usage statisticshttps://storage.liteio.dev/mcp
4. Authorize with your email
### Connect ChatGPT
1. Open Settings > Connected apps
2. Click Add app > Add by URL
3. Enter URL: https://storage.liteio.dev/mcp
4. Sign in with your email
### Connect Claude Desktop
Add to your claude_desktop_config.json:
sk_* format, 90-day TTL.
- Signed share links — Time-limited URLs, 60 seconds to 7 days, auto-expire.
- OAuth 2.0 + PKCE — Standard flow for third-party apps. Dynamic client registration.
- Rate limiting — Per-endpoint sliding window. Auth: 10/min. Uploads: 100/min.
- Audit logging — Every action logged with actor, resource, and timestamp.
## Links
- API Reference
- CLI Documentation
- Pricing
- Developer Guide (human view)