Skip to Content
SDK & LibrariesPython SDK

Python SDK

Simple Python library to upload content to multiple social media platforms simultaneously.

Features

✨ Upload to TikTok, YouTube, Instagram, and more ⚡ Bulk uploads to multiple accounts 🔐 Secure token-based authentication 📚 Simple, intuitive API 🔔 Webhook support for notifications 👥 Team management

Installation

pip install multi-upload-tool

Quick Start

from multi_upload_tool import MultiUploadClient client = MultiUploadClient(api_token="your-api-token") # List accounts accounts = client.accounts.list() # Upload a video upload = client.uploads.upload( account_id=123, file_path="/path/to/video.mp4", title="My Video", description="Check this out!" ) print(f"Upload ID: {upload['id']}")

Authentication

You need an API token to use the SDK. Pass it to MultiUploadClient via the api_token parameter.

  1. Sign up or log in to your Multi Upload Tool dashboard 
  2. Navigate to Settings > API Keys
  3. Generate a new API token
  4. Copy and store it securely

Resources

The SDK is organized into resource modules:

ResourcePurpose
client.accountsManage connected social media accounts
client.uploadsUpload and manage content
client.teamsManage team members and permissions
client.short_linksCreate and manage short links
client.webhooksSet up event notifications
client.whitelabelConfigure white-label connection links
client.pinterestPinterest-specific operations

Example: Bulk Upload

# Get all active TikTok accounts accounts = client.accounts.list(platform='tiktok', status='active') account_ids = [a['id'] for a in accounts] # Upload to all at once upload = client.uploads.upload( account_id=account_ids, file_path="/path/to/video.mp4", title="Broadcast Video" )

Accounts

client.accounts.list(platform=None, status=None)

Returns a list of connected accounts. Filter by platform ('tiktok', 'youtube', 'instagram', etc.) or status ('active', 'revoked').

client.accounts.get(account_id)

Returns details for a specific account.

client.accounts.linkedin_pages(account_id=None)

Returns LinkedIn Pages/Organizations associated with a connected LinkedIn account. Pass account_id to filter to a specific account.

client.accounts.delete(account_id)

Disconnects an account.

Uploads

client.uploads.upload(account_id, file_path=None, async_mode=True, **kwargs)

Unified upload for all platforms. Pass a list as account_id for bulk upload, or a list as file_path for carousel.

# Single video client.uploads.upload( account_id=123, file_path="/path/to/video.mp4", title="My Video" ) # Carousel (multiple photos) client.uploads.upload( account_id=123, file_path=["/path/to/photo1.jpg", "/path/to/photo2.jpg"], media_type="IMAGE", title="My carousel" ) # Bulk (multiple accounts) client.uploads.upload( account_id=[123, 456, 789], file_path="/path/to/video.mp4", title="Broadcast Video" )

client.uploads.list(page=1, limit=100, platform=None, status=None, search=None)

Returns a paginated list of uploads.

client.uploads.get(upload_id)

Returns details for a specific upload.

client.uploads.update(upload_id, **kwargs)

Updates an upload. Accepted fields: title, description, scheduledFor.

client.uploads.limits(account_id)

Returns the upload limits for a given connected account.

Webhooks

client.webhooks.list()

Returns all webhooks.

client.webhooks.create(url, events, description=None)

Creates a webhook. events is a list of event names (e.g. ['upload.completed', 'account.connected']).

client.webhooks.test(webhook_id)

Sends a test payload to the webhook.

client.webhooks.delete(webhook_id)

Deletes a webhook.

Returns all short links.

Returns details for a specific short link.

client.short_links.create(url, slug=None, **kwargs)

Creates a short link. Optional fields: title, description, useDeepLinking, botProtection, safe_page, rules.

Updates a short link.

Deletes a short link.

Teams

client.teams.get_current()

Returns the current team details.

client.teams.list_members()

Returns all team members.

client.teams.invite(email=None, role="MEMBER")

Invites a user to the team. role is 'MEMBER' or 'ADMIN'.

client.teams.update_member_role(member_id, role, isActive)

Updates a member’s role and active status.

client.teams.remove_member(member_id)

Removes a member from the team.

White Label

client.whitelabel.list()

Returns active white-label connection links.

client.whitelabel.create(platform=None, expires_in_hours=24, **kwargs)

Creates a white-label connection link. Optional kwargs: logoUrl, title, redirectUrl, tags.

Revokes a white-label link.

Error Handling

from multi_upload_tool import APIError, AuthenticationError, ValidationError try: result = client.uploads.upload( account_id=123, file_path="/path/to/video.mp4", title="My Video" ) except AuthenticationError: print("Invalid API token") except ValidationError as e: print(f"Validation error: {e}") except APIError as e: print(f"API error {e.status_code}: {e}")
ExceptionWhen raised
AuthenticationErrorHTTP 401 — invalid or missing API token
APIErrorHTTP 4xx/5xx — has .status_code and .response attributes
ValidationErrorInput validation failed before the request