SDKsServer-side
Python
Notiflows Python SDK for server-side integration
The Python SDK (notiflows) allows you to trigger notiflows, manage users, and interact with the Notiflows Admin API from your Python backend.
Installation
pip install notiflowsQuick Start
from notiflows import Notiflows
client = Notiflows(
api_key="pk_your_api_key",
secret="sk_your_secret_key",
)
# Trigger a notiflow
client.notiflows.run(
"welcome-email",
data={"name": "Jane"},
recipients=[{"external_id": "user_123"}],
)Configuration
client = Notiflows(
api_key="pk_your_api_key",
secret="sk_your_secret_key",
)Both api_key and secret are required. Find them in your project's Settings > API Keys.
Triggering Notiflows
# Send to specific recipients
client.notiflows.run(
"order-shipped",
data={"order_id": "order_789", "tracking_url": "https://example.com/track/789"},
recipients=[
{"external_id": "user_123"},
{"external_id": "user_456"},
],
)
# Send to all subscribers of a topic
client.notiflows.run(
"new-comment",
topic="post_123",
data={"commenter": "Jane", "comment": "Great post!"},
actor={"external_id": "user_456"},
)Managing Users
Upsert User
user = client.users.upsert(
"user_123",
email="jane@example.com",
first_name="Jane",
last_name="Doe",
)Get User
user = client.users.retrieve("user_123")List Users
users_page = client.users.list(limit=20)Delete User
client.users.delete("user_123")User Preferences
# Get preferences
prefs = client.users.preferences.retrieve("user_123")
# Update preferences
client.users.preferences.update(
"user_123",
channel_types={"email": True, "sms": False},
)Topic Subscriptions
# Subscribe user to topic
client.users.subscriptions.subscribe("user_123", topic_name="product-updates")
# List user subscriptions
subs = client.users.subscriptions.list("user_123")
# Unsubscribe
client.users.subscriptions.unsubscribe("product-updates", user_external_id="user_123")Topics
# List topics
topics = client.topics.list(limit=10)
# Get topic
topic = client.topics.retrieve("product-updates")
# Delete topic
client.topics.delete("product-updates")Notifications & Deliveries
# List notifications
notifications = client.notifications.list(limit=10)
# Get notification
notification = client.notifications.retrieve("notification_id")
# List deliveries for a notification
deliveries = client.notifications.list_deliveries("notification_id")
# List all deliveries
deliveries = client.deliveries.list(limit=10)
# Get delivery
delivery = client.deliveries.retrieve("delivery_id")User Notifications & Deliveries
# List user's notifications
client.users.notifications.list("user_123")
# List user's deliveries
client.users.deliveries.list("user_123")