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 Schedulify
client = Schedulify('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 schedulify import Schedulify
# Simple initialization
client = Schedulify('sk_live_YOUR_API_KEY')
# With options
client = Schedulify(
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 Schedulify, SchedulifyError
client = Schedulify('sk_live_YOUR_API_KEY')
try:
client.posts.create(content='Test', account_ids=['acc_123'])
except SchedulifyError 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.0.tar.gz
(8.4 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.0.tar.gz.
File metadata
- Download URL: schedulifyx-1.0.0.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c5fe233d3116fcade5b8a1b6df05d78946a5a9b40885d3da9aa37b4860de02d
|
|
| MD5 |
7cc1cced9261316b61a4029248b22fba
|
|
| BLAKE2b-256 |
b67105f60cc692bfa9a99a23f98b52d0f7b7429fcdd5545e534ad50affb0dd15
|
File details
Details for the file schedulifyx-1.0.0-py3-none-any.whl.
File metadata
- Download URL: schedulifyx-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.5 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 |
d4764457ca147cd7caa5afffed8264ab5c42b7267b8dd77c43089d4f3c19f1d5
|
|
| MD5 |
45a26d6f4723c4a60bac6f057e80fd5c
|
|
| BLAKE2b-256 |
771cfa926a403f092df786a5392c5b6510dff17fbeae08590deded79e87cee4c
|