Skip to main content

Python SDK for the Siren Notification Platform.

Project description

Siren Python SDK

This is the official Python SDK for the Siren notification platform.

Table of Contents

Installation

pip install siren-ai

Basic Usage

Synchronous

from siren import SirenClient


# Uses SIREN_API_KEY and SIREN_ENV environment variables
client = SirenClient()

# Send a direct message without template
message_id = client.message.send(
    recipient_value="alice@company.com",
    channel="EMAIL",
    body="Your account has been successfully verified. You can now access all features."
)

# Send a message using a template
message_id = client.message.send(
    recipient_value="U01UBCD06BB",
    channel="SLACK",
    template_name="welcome_template",
    template_variables={"user_name": "John"},
)

# Send a message with specific provider
from siren.models.messaging import ProviderCode
message_id = client.message.send(
    recipient_value="alice@company.com",
    channel="EMAIL",
    body="Your account has been successfully verified.",
    provider_name="email-provider",
    provider_code=ProviderCode.EMAIL_SENDGRID,
)

# Send a message using awesome template
message_id = client.message.send_awesome_template(
    recipient_value="U01UBCD06BB",
    channel="SLACK",
    template_identifier="awesome-templates/customer-support/escalation_required/official/casual.yaml",
    template_variables={
        "ticket_id": "123456",
        "customer_name": "John",
        "issue_summary": "Payment processing issue",
        "ticket_url": "https://support.company.com/ticket/123456",
        "sender_name": "Support Team"
    },
    provider_name="slack-provider",
    provider_code=ProviderCode.SLACK,
)
# You can also do:
client = SirenClient(api_key="YOUR_SIREN_API_KEY") # default env is "prod"

# Or:
client = SirenClient(api_key="YOUR_SIREN_API_KEY", env="dev")

Asynchronous

from siren import AsyncSirenClient

# Using async context manager (recommended)
async with AsyncSirenClient() as client:
    message_id = await client.message.send(
        recipient_value="alice@company.com",
        channel="EMAIL",
        body="Your account has been successfully verified. You can now access all features."
    )

# Or manually managing the client
client = AsyncSirenClient()
try:
    message_id = await client.message.send(
        recipient_value="alice@company.com",
        channel="EMAIL",
        body="Your account has been successfully verified. You can now access all features."
    )
finally:
    await client.aclose()

All synchronous methods have a 1-to-1 asynchronous equivalent—just await them on the async client.

SDK Methods

The Siren-AI Python SDK provides a clean, namespaced interface to interact with the Siren API.

Templates (client.template.*)

  • client.template.get() - Retrieves a list of notification templates with optional filtering, sorting, and pagination
  • client.template.create() - Creates a new notification template
  • client.template.update() - Updates an existing notification template
  • client.template.delete() - Deletes an existing notification template
  • client.template.publish() - Publishes a template, making its latest draft version live

Channel Templates (client.channel_template.*)

  • client.channel_template.create() - Creates or updates channel-specific templates (EMAIL, SMS, etc.)
  • client.channel_template.get() - Retrieves channel templates for a specific template version

Messaging (client.message.*)

  • client.message.send() - Sends a message (with or without a template) to a recipient via a chosen channel
  • client.message.send_awesome_template() - Sends a message using a template path/identifier
  • client.message.get_replies() - Retrieves replies for a specific message ID
  • client.message.get_status() - Retrieves the status of a specific message (SENT, DELIVERED, FAILED, etc.)

Workflows (client.workflow.*)

  • client.workflow.trigger() - Triggers a workflow with given data and notification payloads
  • client.workflow.trigger_bulk() - Triggers a workflow in bulk for multiple recipients
  • client.workflow.schedule() - Schedules a workflow to run at a future time (once or recurring)

Webhooks (client.webhook.*)

  • client.webhook.configure_notifications() - Configures webhook URL for receiving status updates
  • client.webhook.configure_inbound() - Configures webhook URL for receiving inbound messages

Users (client.user.*)

  • client.user.add() - Creates a new user or updates existing user with given unique_id
  • client.user.update() - Updates an existing user's information
  • client.user.delete() - Deletes an existing user

Examples

For detailed usage examples of all SDK methods, see the examples folder.

For Package Developers

Environment Configuration

For testing the SDK, set these environment variables:

  • SIREN_API_KEY: Your API key from the Siren dashboard
  • SIREN_ENV: Set to dev for development/testing (defaults to prod)

Prerequisites

Setup Steps

  1. Clone the repository:

    git clone https://github.com/KeyValueSoftwareSystems/siren-py-sdk.git
    cd siren-py-sdk
    
  2. Create a virtual environment using uv: This creates an isolated environment in a .venv directory.

    uv venv
    
  3. Activate the virtual environment: Commands will now use this environment's Python and packages.

    source .venv/bin/activate
    

    (On Windows, use: .venv\Scripts\activate)

  4. Install dependencies with uv: This installs siren-ai in editable mode (-e) and all development dependencies (.[dev]).

    uv pip install -e ".[dev]"
    
  5. Set up pre-commit hooks: (Ensures code quality before commits)

    uv run pre-commit install
    

    You are now ready to contribute to the siren-ai SDK!

    Try $ python examples/messaging_async.py

Code Style & Linting

  • Code style is enforced by ruff (linting, formatting, import sorting) and pyright (type checking).
  • These tools are automatically run via pre-commit hooks.

Running Tests

To run the test suite, use the following command from the project root directory:

uv run pytest

This will execute all tests defined in the tests/ directory.

Submitting Changes

  • Create a feature branch for your changes.
  • Commit your changes (pre-commit hooks will run).
  • Push your branch and open a Pull Request against the develop repository branch.

Changes planned

  • Check how critical is .close() for async client, explore ways to avoid that.

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

siren_ai-0.1.1.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siren_ai-0.1.1-py3-none-any.whl (33.2 kB view details)

Uploaded Python 3

File details

Details for the file siren_ai-0.1.1.tar.gz.

File metadata

  • Download URL: siren_ai-0.1.1.tar.gz
  • Upload date:
  • Size: 38.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for siren_ai-0.1.1.tar.gz
Algorithm Hash digest
SHA256 672b4c279299677e7a9155bdc104e2d548f30e7d28e774e612145764d5552da9
MD5 39f684a14b260e1b325cc1bf88c176b8
BLAKE2b-256 28b32de9e1b000c096da030700a6071790ff8742f42cd46ce62dd2926c05113d

See more details on using hashes here.

File details

Details for the file siren_ai-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: siren_ai-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 33.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for siren_ai-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 90486875115923720f18d4c56896afef98e3a9b9b5c31f173bcdedc8d81b439d
MD5 741f3ada04be1dc4bd4fe94a005a2b59
BLAKE2b-256 1b0ced3a6afbeb690dd21451c69ee6ed42b5415e8d35e2a60e2196afb6b61ad5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page