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-toolQuick 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.
- Sign up or log in to your Multi Upload Tool dashboard
- Navigate to Settings > API Keys
- Generate a new API token
- Copy and store it securely
Resources
The SDK is organized into resource modules:
| Resource | Purpose |
|---|---|
client.accounts | Manage connected social media accounts |
client.uploads | Upload and manage content |
client.teams | Manage team members and permissions |
client.short_links | Create and manage short links |
client.webhooks | Set up event notifications |
client.whitelabel | Configure white-label connection links |
client.pinterest | Pinterest-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.
Short Links
client.short_links.list()
Returns all short links.
client.short_links.get(link_id)
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.
client.short_links.update(link_id, **kwargs)
Updates a short link.
client.short_links.delete(link_id)
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.
client.whitelabel.delete(link_id)
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}")| Exception | When raised |
|---|---|
AuthenticationError | HTTP 401 — invalid or missing API token |
APIError | HTTP 4xx/5xx — has .status_code and .response attributes |
ValidationError | Input validation failed before the request |