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 key
  • 403, key's account is no longer on the Developer plan
  • 400, no file in the request body
  • 413, monthly data cap reached
  • 429, 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 an upload_url hosted 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. Reports pending for a reserved upload whose bytes haven't arrived, and expired once 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 an upload_id plus the recommended chunk size.
  • upload_chunk, send one base64-encoded chunk; call repeatedly with increasing chunk_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.