Skip to main content

Python client for the uploadthing API

Project description

Upyloadthing

Build Status PyPI version Python Versions

Python client for the uploadthing API - The easiest way to add file uploads to your Python application.

Installation

pip install upyloadthing

Quick Start

from upyloadthing import UTApi, UTApiOptions

# Initialize with token
api = UTApi(UTApiOptions(token="your-token"))

# Upload a file
with open("example.png", "rb") as f:
    result = api.upload_files(f)
    print(f"File uploaded: {result.url}")

Environment Variables

The SDK can be configured using environment variables:

  • UPLOADTHING_TOKEN - Your uploadthing API token (required if not passed to UTApiOptions)
  • UPLOADTHING_REGION - Preferred upload region (optional, defaults to first available region found in the decoded token)

Examples

Upload Multiple Files

files = [
    open("image1.jpg", "rb"),
    open("image2.jpg", "rb")
]
results = api.upload_files(files)
for result in results:
    print(f"Uploaded: {result.url}")

Delete Files

# Delete by file key
response = api.delete_files("file_key_123")

# Delete multiple files
response = api.delete_files(["key1", "key2"])

# Delete by custom ID
response = api.delete_files("custom_123", key_type="custom_id")

List Files

# Get first 10 files
files = api.list_files(limit=10)
for file in files.files:
    print(f"{file.name}: {file.url}")

# Pagination
files = api.list_files(limit=10, offset=10)

Check Usage

usage = api.get_usage_info()
print(f"Total storage used: {usage.total_bytes / 1024 / 1024:.2f} MB")
print(f"Files uploaded: {usage.files_uploaded}")

Error Handling

The SDK uses standard Python exceptions:

from requests.exceptions import HTTPError

try:
    api.upload_files(file)
except HTTPError as e:
    if e.response.status_code == 413:
        print("File too large")
    else:
        print(f"Upload failed: {e}")
except Exception as e:
    print(f"Unexpected error: {e}")

API Reference

Client Classes

Both clients provide the same methods with identical parameters, but different execution patterns:

UTApi (Synchronous)

from upyloadthing import UTApi

api = UTApi(UTApiOptions(token="your-token"))
result = api.upload_files(file)

AsyncUTApi (Asynchronous)

from upyloadthing import AsyncUTApi

api = AsyncUTApi(UTApiOptions(token="your-token"))
result = await api.upload_files(file)

Methods

Both clients provide these methods:

  • upload_files(files: BinaryIO | List[BinaryIO], content_disposition: str = "inline", acl: str | None = "public-read") -> List[UploadResult]

    • Upload one or more files
    • Returns list of upload results
  • delete_files(keys: str | List[str], key_type: str = "file_key") -> DeleteFileResponse

    • Delete one or more files by key or custom ID
    • Returns deletion result
  • list_files(limit: int | None = None, offset: int | None = None) -> ListFileResponse

    • List uploaded files with optional pagination
    • Returns file listing
  • get_usage_info() -> UsageInfoResponse

    • Get account usage statistics
    • Returns usage information

Response Models

All response models are defined in upyloadthing/schemas.py:

  • UploadResult - File upload result containing:
    • file_key: str
    • name: str
    • size: int
    • type: str
    • url: str
    • ufs_url: str
    • app_url: str
    • file_hash: str
    • server_data: Dict | None
  • DeleteFileResponse - File deletion result containing:
    • success: bool
    • deleted_count: int
  • ListFileResponse - File listing result containing:
    • has_more: bool
    • files: List[FileData]
  • UsageInfoResponse - Usage statistics containing:
    • total_bytes: int
    • app_total_bytes: int
    • files_uploaded: int
    • limit_bytes: int

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upyloadthing-0.2.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

upyloadthing-0.2.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file upyloadthing-0.2.0.tar.gz.

File metadata

  • Download URL: upyloadthing-0.2.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.9 Linux/6.8.0-1021-azure

File hashes

Hashes for upyloadthing-0.2.0.tar.gz
Algorithm Hash digest
SHA256 880854adf7fc785d6ec9a5361947b1d8e8fd30c0f5783c594d2f6c994df6d893
MD5 ba8fa39cab4f815dcbc2f915dce5d1be
BLAKE2b-256 e34b5812bcfd8a5ab7a21984d55f51c41a47e1bae2396578d4f66f1a084ec8b1

See more details on using hashes here.

File details

Details for the file upyloadthing-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: upyloadthing-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.9 Linux/6.8.0-1021-azure

File hashes

Hashes for upyloadthing-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfaf2bd0b08bf538f88abb6d0e90e39341bd32eecd01619dfb62c1ec7a23278a
MD5 66f9a539088f1e73728d9c9855f36241
BLAKE2b-256 8515ebd56dae168a0181ef710091b7ab5a7adf1e7ea195165cc11251d4dcfbe8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page