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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file signalhouse-1.0.2.tar.gz.
File metadata
- Download URL: signalhouse-1.0.2.tar.gz
- Upload date:
- Size: 20.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
771b12470026095fa0add81a0b6bd3eb108213fbb8cbdaa963abf037c013f28f
|
|
| MD5 |
9a3485d05e633cff20559980a1b38674
|
|
| BLAKE2b-256 |
e129f660ef057dd529864aa560b2c9d53c1e4e28fd79a2b04b1e200e1507a673
|
File details
Details for the file signalhouse-1.0.2-py3-none-any.whl.
File metadata
- Download URL: signalhouse-1.0.2-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeff86125cabb22f1d1efd3d47dd22ae5905e8428c74466c9671a3766204055a
|
|
| MD5 |
0db67a4a6fc78228c36f665d4c537abc
|
|
| BLAKE2b-256 |
c413553e1734854a367bc88ad0de8b7fb3d24be2289b9b99795032cf0ab1c6f6
|