You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One API to post everywhere. 14 platforms, zero headaches.
The official Python SDK for the Zernio API — schedule and publish social media posts across Instagram, TikTok, YouTube, LinkedIn, X/Twitter, Facebook, Pinterest, Threads, Bluesky, Reddit, Snapchat, Telegram, WhatsApp, and Google Business Profile with a single integration.
Installation
pip install zernio-sdk
Quick Start
fromzernioimportZernio# Reads ZERNIO_API_KEY from environment (or pass explicitly)client=Zernio()
# Publish to multiple platforms with one callpost=client.posts.create(
content="Hello world from Zernio!",
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!")
Configuration
client=Zernio(
api_key="your-api-key", # Or set ZERNIO_API_KEY env varbase_url="https://zernio.com/api", # Optional, this is the defaulttimeout=30.0, # Optional, request timeout in seconds
)
Examples
Schedule a Post
post=client.posts.create(
content="This post will go live tomorrow at 10am",
platforms=[{"platform": "instagram", "accountId": "acc_xxx"}],
scheduled_for="2025-02-01T10:00:00Z",
)
Platform-Specific Content
Customize content per platform while posting to all at once:
post=client.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,
)
Upload Media
# Option 1: Direct upload (simplest)result=client.media.upload("path/to/video.mp4")
media_url=result["publicUrl"]
# Option 2: Upload from bytesresult=client.media.upload_bytes(video_bytes, "video.mp4", "video/mp4")
media_url=result["publicUrl"]
# Create post with mediapost=client.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,
)
All old names continue to work. No code changes are required:
# Old style (still works)fromlateimportLate, LateAPIErrorclient=Late(api_key="...")
# New stylefromzernioimportZernio, ZernioAPIErrorclient=Zernio() # reads ZERNIO_API_KEY env var
Both from zernio import ... and from late import ... work identically. The LATE_API_KEY environment variable is also still supported as a fallback when ZERNIO_API_KEY is not set.
SDK Reference
Posts
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.update_post_metadata()
Update post metadata
posts.delete_post()
Delete post
posts.edit_post()
Edit published post
posts.retry_post()
Retry failed post
posts.unpublish_post()
Unpublish post
Accounts
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.get_tik_tok_creator_info()
Get TikTok creator info
accounts.update_account()
Update account
accounts.delete_account()
Disconnect account
accounts.batch_get_google_business_reviews()
Batch get reviews
Profiles
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
Analytics
Method
Description
analytics.get_analytics()
Get post analytics
analytics.get_best_time_to_post()
Get best times to post
analytics.get_content_decay()
Get content performance decay
analytics.get_daily_metrics()
Get daily aggregated metrics
analytics.get_facebook_page_insights()
Get Facebook Page insights
analytics.get_google_business_performance()
Get GBP performance metrics
analytics.get_google_business_search_keywords()
Get GBP search keywords
analytics.get_instagram_account_insights()
Get Instagram insights
analytics.get_instagram_demographics()
Get Instagram demographics
analytics.get_instagram_follower_history()
Get Instagram follower history
analytics.get_linked_in_aggregate_analytics()
Get LinkedIn aggregate stats
analytics.get_linked_in_org_aggregate_analytics()
Get LinkedIn organization page aggregate analytics
analytics.get_linked_in_post_analytics()
Get LinkedIn post stats
analytics.get_linked_in_post_reactions()
Get LinkedIn post reactions
analytics.get_post_timeline()
Get post analytics timeline
analytics.get_posting_frequency()
Get frequency vs engagement
analytics.get_tik_tok_account_insights()
Get TikTok account-level insights
analytics.get_you_tube_channel_insights()
Get YouTube channel-level insights
analytics.get_you_tube_daily_views()
Get YouTube daily views
analytics.get_you_tube_demographics()
Get YouTube demographics
Account Groups
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
Queue
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
Webhooks
Method
Description
webhooks.create_webhook_settings()
Create webhook
webhooks.get_webhook_settings()
List webhooks
webhooks.update_webhook_settings()
Update webhook
webhooks.delete_webhook_settings()
Delete webhook
webhooks.test_webhook()
Send test webhook
API Keys
Method
Description
api_keys.list_api_keys()
List keys
api_keys.create_api_key()
Create key
api_keys.delete_api_key()
Delete key
Media
Method
Description
media.get_media_presigned_url()
Get 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
Users
Method
Description
users.list_users()
List users
users.get_user()
Get user
Usage
Method
Description
usage.get_usage_stats()
Get plan and usage stats
usage.get_x_api_pricing()
Get X/Twitter API pricing table
Logs
Method
Description
logs.list_logs()
List activity logs
Connect (OAuth)
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.list_whats_app_phone_numbers()
List WhatsApp phone numbers for selection
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.get_youtube_playlists()
List YouTube playlists
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.update_youtube_default_playlist()
Set default YouTube playlist
connect.complete_telegram_connect()
Check Telegram status
connect.complete_whats_app_phone_selection()
Complete WhatsApp phone number selection
connect.configure_tik_tok_ads_brand_identity()
Configure TikTok Ads Brand Identity
connect.connect_ads()
Connect ads for a platform
connect.connect_bluesky_credentials()
Connect Bluesky account
connect.connect_whats_app_credentials()
Connect WhatsApp via credentials
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
Reddit
Method
Description
reddit.get_reddit_feed()
Get subreddit feed
reddit.search_reddit()
Search posts
Account Settings
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
Ad Audiences
Method
Description
ad_audiences.list_ad_audiences()
List custom audiences
ad_audiences.create_ad_audience()
Create custom audience
ad_audiences.get_ad_audience()
Get audience details
ad_audiences.delete_ad_audience()
Delete custom audience
ad_audiences.add_users_to_ad_audience()
Add users to audience
Ad Campaigns
Method
Description
ad_campaigns.list_ad_campaigns()
List campaigns
ad_campaigns.bulk_update_ad_campaign_status()
Pause or resume many campaigns
ad_campaigns.get_ad_tree()
Get campaign tree
ad_campaigns.update_ad_campaign()
Update a campaign (budget and/or bid strategy)
ad_campaigns.update_ad_campaign_status()
Pause or resume a campaign
ad_campaigns.update_ad_set()
Update an ad set (budget, status, and/or bid strategy)