One API to post everywhere. 13 platforms, zero headaches.
The official Python SDK for the Late API — schedule and publish social media posts across Instagram, TikTok, YouTube, LinkedIn, X/Twitter, Facebook, Pinterest, Threads, Bluesky, Reddit, Snapchat, Telegram, and Google Business Profile with a single integration.
pip install late-sdkfrom late import Late
late = Late(api_key="your-api-key")
# Publish to multiple platforms with one call
post = late.posts.create(
content="Hello world from Late!",
platforms=[
{"platform": "twitter", "accountId": "acc_xxx"},
{"platform": "linkedin", "accountId": "acc_yyy"},
{"platform": "instagram", "accountId": "acc_zzz"},
],
publish_now=True,
)
print(f"Published to {len(post['post']['platforms'])} platforms!")late = Late(
api_key="your-api-key", # Required
base_url="https://getlate.dev/api", # Optional, this is the default
timeout=30.0, # Optional, request timeout in seconds
)post = late.posts.create(
content="This post will go live tomorrow at 10am",
platforms=[{"platform": "instagram", "accountId": "acc_xxx"}],
scheduled_for="2025-02-01T10:00:00Z",
)Customize content per platform while posting to all at once:
post = late.posts.create(
content="Default content",
platforms=[
{
"platform": "twitter",
"accountId": "acc_twitter",
"platformSpecificContent": "Short & punchy for X",
},
{
"platform": "linkedin",
"accountId": "acc_linkedin",
"platformSpecificContent": "Professional tone for LinkedIn with more detail.",
},
],
publish_now=True,
)# Option 1: Direct upload (simplest)
result = late.media.upload("path/to/video.mp4")
media_url = result["publicUrl"]
# Option 2: Upload from bytes
result = late.media.upload_bytes(video_bytes, "video.mp4", "video/mp4")
media_url = result["publicUrl"]
# Create post with media
post = late.posts.create(
content="Check out this video!",
media_urls=[media_url],
platforms=[
{"platform": "tiktok", "accountId": "acc_xxx"},
{"platform": "youtube", "accountId": "acc_yyy", "youtubeTitle": "My Video"},
],
publish_now=True,
)data = late.analytics.get(period="30d")
print("Analytics:", data)data = late.accounts.list()
for account in data["accounts"]:
print(f"{account['platform']}: @{account['username']}")import asyncio
from late import Late
async def main():
async with Late(api_key="your-api-key") as late:
posts = await late.posts.alist(status="scheduled")
print(f"Found {len(posts['posts'])} scheduled posts")
asyncio.run(main())from late import Late, LateAPIError, LateRateLimitError, LateValidationError
late = Late(api_key="your-api-key")
try:
late.posts.create(content="Hello!", platforms=[...])
except LateRateLimitError as e:
print(f"Rate limited: {e}")
except LateValidationError as e:
print(f"Invalid request: {e}")
except LateAPIError as e:
print(f"API error: {e}")| Method | Description |
|---|---|
posts.list_posts() |
List posts |
posts.bulk_upload_posts() |
Bulk upload from CSV |
posts.create_post() |
Create post |
posts.get_post() |
Get post |
posts.update_post() |
Update post |
posts.delete_post() |
Delete post |
posts.retry_post() |
Retry failed post |
posts.unpublish_post() |
Unpublish post |
| Method | Description |
|---|---|
accounts.get_all_accounts_health() |
Check accounts health |
accounts.list_accounts() |
List accounts |
accounts.get_account_health() |
Check account health |
accounts.get_follower_stats() |
Get follower stats |
accounts.get_google_business_reviews() |
Get reviews |
accounts.get_linked_in_mentions() |
Resolve LinkedIn mention |
accounts.update_account() |
Update account |
accounts.delete_account() |
Disconnect account |
| Method | Description |
|---|---|
profiles.list_profiles() |
List profiles |
profiles.create_profile() |
Create profile |
profiles.get_profile() |
Get profile |
profiles.update_profile() |
Update profile |
profiles.delete_profile() |
Delete profile |
| Method | Description |
|---|---|
analytics.get_analytics() |
Get post analytics |
analytics.get_linked_in_aggregate_analytics() |
Get LinkedIn aggregate stats |
analytics.get_linked_in_post_analytics() |
Get LinkedIn post stats |
analytics.get_you_tube_daily_views() |
Get YouTube daily views |
| Method | Description |
|---|---|
account_groups.list_account_groups() |
List groups |
account_groups.create_account_group() |
Create group |
account_groups.update_account_group() |
Update group |
account_groups.delete_account_group() |
Delete group |
| Method | Description |
|---|---|
queue.list_queue_slots() |
List schedules |
queue.create_queue_slot() |
Create schedule |
queue.get_next_queue_slot() |
Get next available slot |
queue.update_queue_slot() |
Update schedule |
queue.delete_queue_slot() |
Delete schedule |
queue.preview_queue() |
Preview upcoming slots |
| Method | Description |
|---|---|
webhooks.create_webhook_settings() |
Create webhook |
webhooks.get_webhook_logs() |
Get delivery logs |
webhooks.get_webhook_settings() |
List webhooks |
webhooks.update_webhook_settings() |
Update webhook |
webhooks.delete_webhook_settings() |
Delete webhook |
webhooks.test_webhook() |
Send test webhook |
| Method | Description |
|---|---|
api_keys.list_api_keys() |
List keys |
api_keys.create_api_key() |
Create key |
api_keys.delete_api_key() |
Delete key |
| Method | Description |
|---|---|
media.get_media_presigned_url() |
Get presigned upload URL |
media.upload() |
Upload a file from path |
media.upload_bytes() |
Upload file from bytes |
media.upload_large() |
Upload large file with multipart |
media.upload_large_bytes() |
Upload large file from bytes |
media.upload_multiple() |
Upload multiple files |
| Method | Description |
|---|---|
tools.get_you_tube_transcript() |
Get YouTube transcript |
tools.check_instagram_hashtags() |
Check IG hashtag bans |
tools.download_bluesky_media() |
Download Bluesky media |
tools.download_facebook_video() |
Download Facebook video |
tools.download_instagram_media() |
Download Instagram media |
tools.download_linked_in_video() |
Download LinkedIn video |
tools.download_tik_tok_video() |
Download TikTok video |
tools.download_twitter_media() |
Download Twitter/X media |
tools.download_you_tube_video() |
Download YouTube video |
| Method | Description |
|---|---|
users.list_users() |
List users |
users.get_user() |
Get user |
| Method | Description |
|---|---|
usage.get_usage_stats() |
Get plan and usage stats |
| Method | Description |
|---|---|
logs.list_connection_logs() |
List connection logs |
logs.list_posts_logs() |
List publishing logs |
logs.get_post_logs() |
Get post logs |
| Method | Description |
|---|---|
connect.list_facebook_pages() |
List Facebook pages |
connect.list_google_business_locations() |
List GBP locations |
connect.list_linked_in_organizations() |
List LinkedIn orgs |
connect.list_pinterest_boards_for_selection() |
List Pinterest boards |
connect.list_snapchat_profiles() |
List Snapchat profiles |
connect.get_connect_url() |
Get OAuth connect URL |
connect.get_facebook_pages() |
List Facebook pages |
connect.get_gmb_locations() |
List GBP locations |
connect.get_linked_in_organizations() |
List LinkedIn orgs |
connect.get_pending_o_auth_data() |
Get pending OAuth data |
connect.get_pinterest_boards() |
List Pinterest boards |
connect.get_reddit_flairs() |
List subreddit flairs |
connect.get_reddit_subreddits() |
List Reddit subreddits |
connect.get_telegram_connect_status() |
Generate Telegram code |
connect.update_facebook_page() |
Update Facebook page |
connect.update_gmb_location() |
Update GBP location |
connect.update_linked_in_organization() |
Switch LinkedIn account type |
connect.update_pinterest_boards() |
Set default Pinterest board |
connect.update_reddit_subreddits() |
Set default subreddit |
connect.complete_telegram_connect() |
Check Telegram status |
connect.connect_bluesky_credentials() |
Connect Bluesky account |
connect.handle_o_auth_callback() |
Complete OAuth callback |
connect.initiate_telegram_connect() |
Connect Telegram directly |
connect.select_facebook_page() |
Select Facebook page |
connect.select_google_business_location() |
Select GBP location |
connect.select_linked_in_organization() |
Select LinkedIn org |
connect.select_pinterest_board() |
Select Pinterest board |
connect.select_snapchat_profile() |
Select Snapchat profile |
| Method | Description |
|---|---|
reddit.get_reddit_feed() |
Get subreddit feed |
reddit.search_reddit() |
Search posts |
| Method | Description |
|---|---|
account_settings.get_instagram_ice_breakers() |
Get IG ice breakers |
account_settings.get_messenger_menu() |
Get FB persistent menu |
account_settings.get_telegram_commands() |
Get TG bot commands |
account_settings.delete_instagram_ice_breakers() |
Delete IG ice breakers |
account_settings.delete_messenger_menu() |
Delete FB persistent menu |
account_settings.delete_telegram_commands() |
Delete TG bot commands |
account_settings.set_instagram_ice_breakers() |
Set IG ice breakers |
account_settings.set_messenger_menu() |
Set FB persistent menu |
account_settings.set_telegram_commands() |
Set TG bot commands |
| Method | Description |
|---|---|
comments.list_inbox_comments() |
List commented posts |
comments.get_inbox_post_comments() |
Get post comments |
comments.delete_inbox_comment() |
Delete comment |
comments.hide_inbox_comment() |
Hide comment |
comments.like_inbox_comment() |
Like comment |
comments.reply_to_inbox_post() |
Reply to comment |
comments.send_private_reply_to_comment() |
Send private reply |
comments.unhide_inbox_comment() |
Unhide comment |
comments.unlike_inbox_comment() |
Unlike comment |
| Method | Description |
|---|---|
gmb_attributes.get_google_business_attributes() |
Get attributes |
gmb_attributes.update_google_business_attributes() |
Update attributes |
| Method | Description |
|---|---|
gmb_food_menus.get_google_business_food_menus() |
Get food menus |
gmb_food_menus.update_google_business_food_menus() |
Update food menus |
| Method | Description |
|---|---|
gmb_location_details.get_google_business_location_details() |
Get location details |
gmb_location_details.update_google_business_location_details() |
Update location details |
| Method | Description |
|---|---|
gmb_media.list_google_business_media() |
List media |
gmb_media.create_google_business_media() |
Upload photo |
gmb_media.delete_google_business_media() |
Delete photo |
| Method | Description |
|---|---|
gmb_place_actions.list_google_business_place_actions() |
List action links |
gmb_place_actions.create_google_business_place_action() |
Create action link |
gmb_place_actions.delete_google_business_place_action() |
Delete action link |
| Method | Description |
|---|---|
messages.list_inbox_conversations() |
List conversations |
messages.get_inbox_conversation() |
Get conversation |
messages.get_inbox_conversation_messages() |
List messages |
messages.update_inbox_conversation() |
Update conversation status |
messages.edit_inbox_message() |
Edit message |
messages.send_inbox_message() |
Send message |
| Method | Description |
|---|---|
reviews.list_inbox_reviews() |
List reviews |
reviews.delete_inbox_review_reply() |
Delete review reply |
reviews.reply_to_inbox_review() |
Reply to review |
| Method | Description |
|---|---|
invites.create_invite_token() |
Create invite token |
The SDK includes a Model Context Protocol (MCP) server for integration with Claude Desktop. See MCP documentation for setup instructions.
pip install late-sdk[mcp]- Python 3.10+
- Late API key (free tier available)
Apache-2.0