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)
| File | Size | Uploaded | |
|---|---|---|---|
| signalhouse-1.1.8.tar.gz | 37.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|