Drop any file — image, audio, video, document. Stow detects the type, generates tags and descriptions, deduplicates by content, and hands you a CDN URL. MCP-native, so your AI tools can manage your media library too.
// Upload a file — that's it
const form = new FormData()
form.append("file", photoBlob, "sunset.png")
const asset = await fetch("https://api.usestow.com/v1/assets", {
method: "POST",
headers: { Authorization: `Bearer ${STOW_KEY}` },
body: form
})
// Stow auto-detects and enriches:
// → {
// media_type: "image",
// title: "Sunset Over Mountains",
// tags: ["nature", "landscape", "sunset"],
// category: "nature/landscape",
// public_url: "https://api.usestow.com/r2/image/a1b2...f4.png"
// }Drop any file. Stow detects the type, generates tags, description, and category automatically using AI.
Files are stored by content hash. Same file, same asset — true dedup regardless of filename.
Immutable assets are cached at the edge. Repeat reads in under 5ms, globally.
Built-in MCP server so AI coding assistants can search, upload, and manage your media library directly.
One endpoint to upload. Search by type, tags, or text. Get by ID or content hash. That's it.
No metadata required. Just send a file and get back an enriched asset with a CDN URL.
MCP-native
Add the Stow MCP server to Claude Code, Cursor, or any MCP-compatible tool. Search your media library, check for duplicates, and upload files — all through natural language.
// Claude Code MCP config
{
"mcpServers": {
"stow": {
"command": "npx",
"args": ["@usestow/mcp-server"],
"env": {
"STOW_API_URL": "https://api.usestow.com",
"STOW_API_KEY": "stow_sk_..."
}
}
}
}Start free. Upgrade when you need more.
For side projects and experimentation
For production apps
For teams shipping multiple apps
Sign up, grab an API key, and upload. Stow handles the rest. No credit card required.