Developer API
Upload files programmatically and get back a permanent short URL.
Authentication
Every request needs an Authorization header with a Bearer token. Generate a key from your account page.
Authorization: Bearer ftu_live_...
Upload a file
POST https://filetourl.org/api/public/v1/upload
Send a multipart/form-data body with a single field named file.
curl -X POST https://filetourl.org/api/public/v1/upload \ -H "Authorization: Bearer ftu_live_YOUR_KEY_HERE" \ -F "file=@/path/to/local/file.pdf"
Success (200):
{
"url": "https://filetourl.org/f/abc12xyz",
"id": "550e8400-e29b-41d4-a716-446655440000",
"tier": "pro"
}Errors:
401, missing/invalid/revoked API key403, key's account is no longer on the Developer plan400, no file in the request body413, monthly data cap reached429, monthly call cap reached
MCP (for AI agents)
Prefer to use this from an AI agent like Claude Code or Cursor? Connect via MCP instead of raw HTTP calls. Same API key, same limits.
Add this to your MCP client config:
{
"mcpServers": {
"filetourl": {
"url": "https://filetourl.org/api/mcp",
"headers": { "Authorization": "Bearer ftu_live_YOUR_KEY_HERE" }
}
}
}Tools:
create_upload_url, the fastest path and the one to prefer. It reserves your short URL and returns anupload_urlhosted on filetourl.org itself, not on a third-party storage host, so it works from AI agent sandboxes with restrictive network egress allowlists (you only need to allow filetourl.org). Your agent then sends the raw file with a single HTTP PUT, so the bytes never pass through the model as base64. Counts as one call, the transferred bytes count against your data cap.confirm_upload, optional check that the PUT landed, returning the final size and link. The link goes live on a successful PUT whether or not you call this. Free, doesn't count against caps.upload_file, upload a small file inline (base64) and get back a permanent short URL. Simple, but slow and token-hungry above roughly 100KB. Counts against your monthly call and data caps.get_file_status, check whether a previously uploaded file's link is still live. Reportspendingfor a reserved upload whose bytes haven't arrived, andexpiredonce its upload window has closed. Read-only, doesn't count against caps.
The older chunked upload tools (start_upload, upload_chunk, finish_upload) still work and remain available for clients that cannot make their own HTTP requests. They also send base64 through the model, so create_upload_url is faster whenever your agent can perform a PUT.
start_upload, begin a chunked upload and receive anupload_idplus the recommended chunk size.upload_chunk, send one base64-encoded chunk; call repeatedly with increasingchunk_index.finish_upload, assemble the chunks, store the file, and return the permanent short URL. Counts as one call against your monthly caps.
Rate limits
- 2,000 API calls per month, per key
- 25 GB of upload data per month, per key
- Rolling 30-day window (resets 30 days after your first call)
- Requires the Developer plan (£48/yr)
Ready to start?
Already on Developer? Create an API key. Not yet? Upgrade to Developer.