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.10
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.10.tar.gz | 64.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| signalhouse-1.1.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 150.4 kB
Release files / signalhouse-1.1.10.tar.gz
| Download URL | signalhouse-1.1.10.tar.gz |
|---|---|
| Size | 64.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ed61f6bc740f2afbe282066de870459e9b414e5aa1f7a3a26eecefa84aa517e3
|
|
BLAKE2b-256 checksum How to use checksums |
9452e739547f87ac453dd0b87506d0b4799191dc5e8e79beb109f80862f1d9d2
|
| 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.10-py3-none-any.whl
| Download URL | signalhouse-1.1.10-py3-none-any.whl |
|---|---|
| Size | 86.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
53303587a4b21f7dd3c5ba0ca52e51cc56abe0a45cb8562642f69200b8da63ce
|
|
BLAKE2b-256 checksum How to use checksums |
741f3c24286193470e803ad9c77ff2bd86b3b9702b0c6e84d17b91b4c7d9a395
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|