Skip to main content

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

Release files for signalhouse 1.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for signalhouse 1.1.8
File Size Uploaded
signalhouse-1.1.8.tar.gz 37.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for signalhouse 1.1.8
File Interpreter ABI Platform
signalhouse-1.1.8-py3-none-any.whl Python 3 none any Details

Total release size: 91.5 kB

Release files / signalhouse-1.1.8.tar.gz

Download URL signalhouse-1.1.8.tar.gz
Size 37.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d8ffe3dd0b919f325656a2e93a2c4bd9fada091b65720eb3bb970b44508c5fed
BLAKE2b-256 checksum
How to use checksums
f1d1f1e06f816ba66f84d70abb8668476eb59ef95b8088e7439dd2e3f7cb5b30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / signalhouse-1.1.8-py3-none-any.whl

Download URL signalhouse-1.1.8-py3-none-any.whl
Size 54.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0acb58b654e657faea028b30dc4f3f2d40bfa489f0cabc8959b992b43559f4fd
BLAKE2b-256 checksum
How to use checksums
38f10cc548dabdbdafddc0c13a2b2dbfe9994455b3ffa2f3e808961f23696cad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release history Release notifications | RSS feed

1.1.12

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

This release

1.1.8 This release

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.0

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page