Skip to main content

Python SDK for the SignalHouse API

Project description

SignalHouse Python SDK

Python SDK for the SignalHouse API — manage SMS/MMS messaging, phone numbers, 10DLC brands & campaigns, billing, and more.

Installation

pip install signalhouse

Or install from source:

pip install -e .

Quick Start

from signalhouse import SignalHouseSDK

# Initialize the SDK
sdk = SignalHouseSDK(
    api_key="your-api-key",
    base_url="https://v2.signalhouse.io",
)

# Send an SMS
response = sdk.messages.send_sms(
    sender_phone_number="15551234567",
    recipient_phone_numbers="15559876543",
    message_body="Hello from SignalHouse!",
)

if response["success"]:
    print("Message sent!", response["data"])
else:
    print("Error:", response["error"])

Authentication

All methods accept an optional token parameter to override the default API key per-request:

response = sdk.billing.get_wallet("G12345678", token="user-jwt-token")

Domains

The SDK is organized into domain modules matching the SignalHouse API:

Domain Description
sdk.auth Login, password reset, auth history
sdk.billing Wallets, payment methods, funds, invoices, fees
sdk.brands 10DLC brand registration and management
sdk.campaigns 10DLC campaign management
sdk.groups Group management
sdk.landings Landing page management (with file uploads)
sdk.messages Send SMS/MMS/Group MMS, message logs, analytics
sdk.notifications Notification management
sdk.numbers Phone number purchase, assignment, transfer, lookup
sdk.shortlinks URL shortlink operations
sdk.subgroups Subgroup management
sdk.subscriptions Subscription management
sdk.users User and service user management
sdk.webhooks Webhook management

Admin Methods

Some domains have admin-only methods accessible via the .admin sub-object. Enable them by passing enable_admin=True:

sdk = SignalHouseSDK(
    api_key="your-api-key",
    base_url="https://v2.signalhouse.io",
    enable_admin=True,
)

# Admin-only: approve a campaign
response = sdk.campaigns.admin.approve_campaign("campaign-id", token="admin-token")

# Admin-only: list all groups
response = sdk.groups.admin.get_groups(page=1, limit=20, token="admin-token")

Domains with admin sub-objects: campaigns, groups, subscriptions, users.

Response Format

All methods return a standardized dictionary:

Success:

{"success": True, "data": {...}, "status": 200}

Error:

{"success": False, "error": "Error message", "status": 400}

File Uploads

The landings and messages domains support multipart file uploads:

# Create a landing page with a logo
with open("logo.png", "rb") as f:
    response = sdk.landings.create_landing(
        landing_data={
            "brandId": "brand-id",
            "description": "My landing page",
            "primaryBackgroundColor": "#FFFFFF",
            "secondaryBackgroundColor": "#F0F0F0",
            "primaryTextColor": "#000000",
            "secondaryTextColor": "#333333",
        },
        file=("logo.png", f, "image/png"),
    )

# Send an MMS with images
with open("photo.jpg", "rb") as img:
    response = sdk.messages.send_mms(
        sender_phone_number="15551234567",
        recipient_phone_numbers=["15559876543"],
        message_body="Check this out!",
        images=[("photo.jpg", img, "image/jpeg")],
    )

Error Handling

from signalhouse import SignalHouseSDK, SignalHouseValidationError

sdk = SignalHouseSDK(api_key="your-key", base_url="https://v2.signalhouse.io")

try:
    # This will raise SignalHouseValidationError because group_id is required
    sdk.billing.get_wallet("")
except SignalHouseValidationError as e:
    print(f"Validation error: {e.message}")  # "Missing required parameter: groupId"

Requirements

  • Python 3.10+
  • requests >= 2.28.0

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

signalhouse-1.0.6.tar.gz (21.2 kB view details)

Uploaded Source

Built Distribution

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

signalhouse-1.0.6-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file signalhouse-1.0.6.tar.gz.

File metadata

  • Download URL: signalhouse-1.0.6.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for signalhouse-1.0.6.tar.gz
Algorithm Hash digest
SHA256 662398f0e91a09d359cdcf890e96ea0b676308d730b38d4f0cc867f333d0988c
MD5 728e546e2347b7424d9b3534f8f0184b
BLAKE2b-256 f6930aad8ca64ce4114ece973c0c7e2fd6135d8e56cc4ccc4f9de23af495dcd0

See more details on using hashes here.

File details

Details for the file signalhouse-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: signalhouse-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for signalhouse-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 bc02ae029b2c3d6b36d68674d715857d847921d6c0bdfc0d3d08c4acc7a37d2b
MD5 66c43abf5edac771400e422c2a230b46
BLAKE2b-256 b8b7f4e1cbfbf92635c42d2e646a58f548ea4855fb83404ebf559b89ebc04bae

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