← upfile.sh

Anthropic Claude API

File Upload API for Claude

Upload files from your terminal or scripts and get permanent CDN URLs for use with Claude — images, PDFs, code files, screenshots, anything.

# Install once

$ npm install -g upfilesh


# Upload your file

$ upfile screenshot.png

https://cdn.upfile.sh/abc123.png

Why use upfile with Claude?

URL-based sources
Claude supports image URLs natively. Upload once, reference by URL in any message.
PDFs & documents
Send PDFs, text files, and code to Claude without base64 encoding.
Share across sessions
Permanent URLs survive session resets. Perfect for long-running agent workflows.
Free tier
1GB storage free. No credit card required to start.

Python Example

import subprocess, anthropic

# Upload screenshot, get permanent URL
url = subprocess.check_output(["upfile", "screenshot.png"]).decode().strip()

client = anthropic.Anthropic()
message = client.messages.create(
  model="claude-3-5-sonnet-20241022",
  max_tokens=1024,
  messages=[{
    "role": "user",
    "content": [
      {
        "type": "image",
        "source": {"type": "url", "url": url},
      },
      {"type": "text", "text": "What's in this screenshot?"}
    ],
  }]
)
print(message.content)

Built for Claude Agents

Claude agents can self-provision upfile storage and autonomously upload files mid-task:

# Agent signs up, uploads, uses URL — no human needed
$ upfile signup --email agent@example.com --owner-email human@example.com
$ upfile output.png
https://cdn.upfile.sh/xyz.png
Full agent API reference →