Send push notifications and trigger live activities with Python
Use the official Python SDK to deliver immediate push notifications and live activity progress updates for long-running jobs and automation workflows.
DOCUMENTATION
activitysmith.com/docs/sdks/pythonInstall
pip install activitysmithSetup
import os
from activitysmith import ActivitySmith
activitysmith = ActivitySmith(
api_key=os.environ["ACTIVITYSMITH_API_KEY"],
)Push Notifications
Send an immediate notification for a completed task or event:

activitysmith.notifications.send(
{
"title": "New subscription 💸",
"message": "Customer upgraded to Pro plan",
}
)Live Activities
Live Activities come in two UI types, but the lifecycle stays the same: start the activity, keep the returned activity_id, update it as state changes, then end it when the work is done.
segmented_progress: best for jobs tracked in stepsprogress: best for jobs tracked as a percentage or numeric range
Shared flow
- Call
activitysmith.live_activities.start(...). - Save the returned
activity_id. - Call
activitysmith.live_activities.update(...)as progress changes. - Call
activitysmith.live_activities.end(...)when the work is finished.
Segmented Progress Type
Use segmented_progress when progress is easier to follow as steps instead of a raw percentage. It fits jobs like backups, deployments, ETL pipelines, and checklists where "step 2 of 3" is more useful than "67%". number_of_steps is dynamic, so you can increase or decrease it later if the workflow changes.
Start

start = activitysmith.live_activities.start(
{
"content_state": {
"title": "Nightly database backup",
"subtitle": "create snapshot",
"number_of_steps": 3,
"current_step": 1,
"type": "segmented_progress",
"color": "yellow",
},
"channels": ["devs", "ops"], # Optional
}
)
activity_id = start.activity_idUpdate

update = activitysmith.live_activities.update(
{
"activity_id": activity_id,
"content_state": {
"title": "Nightly database backup",
"subtitle": "upload archive",
"current_step": 2,
}
}
)End

end = activitysmith.live_activities.end(
{
"activity_id": activity_id,
"content_state": {
"title": "Nightly database backup",
"subtitle": "verify restore",
"current_step": 3,
"auto_dismiss_minutes": 2,
}
}
)Progress Type
Use progress when the state is naturally continuous. It fits charging, downloads, sync jobs, uploads, timers, and any flow where a percentage or numeric range is the clearest signal.
Start

start = activitysmith.live_activities.start(
{
"content_state": {
"title": "EV Charging",
"subtitle": "Added 30 mi range",
"type": "progress",
"percentage": 15,
"color": "lime",
}
}
)
activity_id = start.activity_idUpdate

activitysmith.live_activities.update(
{
"activity_id": activity_id,
"content_state": {
"title": "EV Charging",
"subtitle": "Added 120 mi range",
"percentage": 60,
}
}
)End

activitysmith.live_activities.end(
{
"activity_id": activity_id,
"content_state": {
"title": "EV Charging",
"subtitle": "Added 200 mi range",
"percentage": 100,
"auto_dismiss_minutes": 2,
}
}
)Integrate with any Python application
Keep your team aligned with immediate event delivery across incidents, business signals, and automation outcomes.