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.1.tar.gz (9.6 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.1-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: upyloadthing-0.2.1.tar.gz
  • Upload date:
  • Size: 9.6 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.1.tar.gz
Algorithm Hash digest
SHA256 248d8c47728912131822dd0890dd094bbbf26ff8630ba3a0febd18c44975507b
MD5 bbcb37c24bee5f334a5fceaeacf901a0
BLAKE2b-256 c1d1f8be9d5341e8480843007dab7e7149fc89d52b0b249e1d483bd576159aee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: upyloadthing-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 12.7 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d9438da3008225ec19d11a13d4d8900fb27e946c8cce2ac56e24bef6bc9514ec
MD5 c3a18b417386711c4fb597abe5e7531f
BLAKE2b-256 ced1949fb7b040971b05d7d2b917567dbe6bea626527a6d6ec6e9ae43aaa9b0d

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