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
Agent skills
The package bundles the Signal House agent skills, which teach a coding agent the order the platform enforces, what carriers require, and what a send cannot do before a campaign is approved.
A Python wheel cannot run anything at install time, so place them with one command:
signalhouse-skills # install into this project
signalhouse-skills --list # show what is bundled and which release it came from
signalhouse-skills --force # create the agent directory if the project has none yet
It only ever writes inside the project, never your home directory, and never overwrites a skill you have edited.
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.12
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.12.tar.gz | 76.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| signalhouse-1.1.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 174.2 kB
Release files / signalhouse-1.1.12.tar.gz
| Download URL | signalhouse-1.1.12.tar.gz |
|---|---|
| Size | 76.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d2f12368e9549c1b30ea42653565d232901c1b73f09682ba78448011aa64d03
|
|
BLAKE2b-256 checksum How to use checksums |
ef1f5999e6d7b7e368410baaf76f57f3f50afc4326d602429ecad4e2b6eb00f9
|
| 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.12-py3-none-any.whl
| Download URL | signalhouse-1.1.12-py3-none-any.whl |
|---|---|
| Size | 97.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
862a031b94b6f9dd62d1b650e1932c182d2ad511edfc2b7513dbd19c7b4f540c
|
|
BLAKE2b-256 checksum How to use checksums |
f65d77ff39071d13f48a528fe5fcf0feed9145398bdec8d5fcb657130d3c88db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|