Official Python SDK for SchedulifyX API - Social media scheduling made easy
Project description
schedulifyx
Official Python SDK for SchedulifyX API - Social media scheduling made easy.
Installation
pip install schedulifyx
Quick Start
from schedulifyx import SchedulifyX
client = SchedulifyX('sk_live_YOUR_API_KEY')
# List all posts
posts = client.posts.list()
print(posts['data'])
# Create a scheduled post
post = client.posts.create(
content='Hello from the SDK! 🚀',
account_ids=['acc_123'],
publish_at='2024-12-20T10:00:00Z'
)
# Publish immediately
client.posts.publish(post['data']['id'])
Configuration
from schedulifyx import SchedulifyX
# Simple initialization
client = SchedulifyX('sk_live_YOUR_API_KEY')
# With options
client = SchedulifyX(
api_key='sk_live_YOUR_API_KEY',
base_url='https://api.schedulifyx.com', # optional
timeout=30 # optional, in seconds
)
API Reference
Posts
# List posts with filters
posts = client.posts.list(
status='scheduled',
account_id='acc_123',
limit=20,
offset=0
)
# Get single post
post = client.posts.get('post_123')
# Create post
new_post = client.posts.create(
content='Hello world!',
account_ids=['acc_123', 'acc_456'],
publish_at='2024-12-20T10:00:00Z',
media_urls=['https://example.com/image.jpg'],
platform_overrides={
'twitter': {'content': 'Hello Twitter! #launch'}
}
)
# Update post
client.posts.update(
post_id='post_123',
content='Updated content',
publish_at='2024-12-21T10:00:00Z'
)
# Delete post
client.posts.delete('post_123')
# Publish immediately
client.posts.publish('post_123')
Accounts
# List all connected accounts
accounts = client.accounts.list()
# Filter by platform
instagram_accounts = client.accounts.list(platform='instagram')
# Get single account
account = client.accounts.get('acc_123')
# Get Pinterest boards
boards = client.accounts.get_pinterest_boards('acc_pinterest_123')
Media Upload
# Get presigned upload URL
response = client.media.get_upload_url(
filename='my-image.jpg',
content_type='image/jpeg'
)
upload_url = response['data']['uploadUrl']
media_url = response['data']['mediaUrl']
# Upload using the presigned URL
import requests
with open('image.jpg', 'rb') as f:
requests.put(upload_url, data=f, headers={'Content-Type': 'image/jpeg'})
# Use media_url in your post
client.posts.create(
content='Check out this image!',
account_ids=['acc_123'],
media_urls=[media_url]
)
# Or use the convenience helper
with open('image.jpg', 'rb') as f:
media_url = client.media.upload(f.read(), 'image.jpg', 'image/jpeg')
Analytics
# Get overview
overview = client.analytics.overview()
# Get account-specific analytics
account_analytics = client.analytics.for_account('acc_123', days=30)
# Get all analytics
all_analytics = client.analytics.list(
start_date='2024-01-01',
end_date='2024-12-31'
)
Queue
# Get queue schedule
queue = client.queue.get_slots('profile_123')
# Set queue schedule
client.queue.set_slots(
profile_id='profile_123',
timezone='America/New_York',
slots=[
{'dayOfWeek': 1, 'time': '09:00'},
{'dayOfWeek': 1, 'time': '15:00'},
{'dayOfWeek': 2, 'time': '09:00'}
],
active=True
)
# Get next available slot
next_slot = client.queue.get_next_slot('profile_123')
# Preview upcoming slots
preview = client.queue.preview('profile_123', count=10)
Usage
usage = client.usage()
print(f"{usage['data']['requestsToday']}/{usage['data']['dailyLimit']} daily requests used")
Multi-Tenant (Enterprise)
# Create a tenant
tenant = client.tenants.create(
external_id='user_123',
email='user@example.com',
name='John Doe'
)
# Get OAuth URL for tenant
response = client.tenants.get_connect_url(tenant['data']['id'], 'instagram')
# Redirect user to response['data']['url']
# List tenant's accounts
accounts = client.tenants.list_accounts(tenant['data']['id'])
# Disconnect account
client.tenants.disconnect_account(tenant['data']['id'], 'acc_123')
Error Handling
from schedulifyx import SchedulifyX, SchedulifyXError
client = SchedulifyX('sk_live_YOUR_API_KEY')
try:
client.posts.create(content='Test', account_ids=['acc_123'])
except SchedulifyXError as e:
print(f'API Error: {e.code} - {e.message}')
print(f'Status: {e.status}')
print(f'Details: {e.details}')
Type Hints
The SDK includes type hints and dataclasses:
from schedulifyx import (
Schedulify,
Post,
Account,
Analytics,
Tenant,
QueueSchedule
)
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
schedulifyx-1.0.2.tar.gz
(8.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file schedulifyx-1.0.2.tar.gz.
File metadata
- Download URL: schedulifyx-1.0.2.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9ddb19eaf12f94efa0694e9169262d810fbf1106a09a1d5509cd730ab1a0331
|
|
| MD5 |
21484cac0ba7b95bab2bc20d0d552c7c
|
|
| BLAKE2b-256 |
dc2f2fce542d940bc54b2cf4fb05dc027d16e48d71508c7ff4d18392077bc883
|
File details
Details for the file schedulifyx-1.0.2-py3-none-any.whl.
File metadata
- Download URL: schedulifyx-1.0.2-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97f45f856ccfc80708c212fcbccbbbe268f30296074a7283447ac6414c747c21
|
|
| MD5 |
0ea01f3a21c4acc692a4faf0632d4c95
|
|
| BLAKE2b-256 |
90875b070a4ba4c3e329bb62df8ab1da6c1c3c096f3776ac1f7fec1bd3c11a62
|