Unofficial Python SDK for smscenter.gr REST API
Project description
PySMSCenter
A typed Python SDK for integrating with the SMSCenter REST API.
Unofficial Python SDK for smscenter.gr - not affiliated with or endorsed by SMSCenter.
PySMSCenter is a modern, fully-typed Python SDK for integrating with the SMSCenter REST API. It provides a structured and well-tested interface for sending SMS messages, managing contacts and groups, performing HLR lookups, handling bulk campaigns, and implementing two-factor authentication (2FA) workflows.
📘 Official API Documentation: https://smscenter.gr/api/docs/en
✨ Features
- 📱 Send Single SMS
- 📤 Send Bulk SMS
- 📊 Check Account Balance
- 📖 SMS History (Single & Grouped)
- 📬 Delivery Status Tracking
- 👤 Contact Management
- 👥 Group Management
- 🔐 Two-Factor Authentication (2FA)
- 🔎 HLR Lookup
- 👥 Sub-account Management
- 🔁 Automatic Retry Support
- ⚠️ Domain-Specific Exceptions
- 🧪 Fully Tested
- 🐍 Python 3.12+
Planned Features
- Viber Management
🔧 Requirements
- Python 3.12+
📦 Installation
pip install pysmscenter
Development installation
git clone https://github.com/alexdotis/PySMSCenter.git
cd PySMSCenter
pip install -e ".[dev]"
⚡ Quick Example
from pysmscenter import SMSClient
with SMSClient("your_api_key") as client:
client.sms.send(
to="306912345678",
text="Hello from PySMSCenter!",
sender="MyApp"
)
🔐 Authentication
You need an API key from:
https://smscenter.gr/api/docs/en
Using API Key
from pysmscenter import SMSClient
client = SMSClient("your_api_key")
Using Username & Password
from pysmscenter import SMSClient
client = SMSClient.from_credentials("username", "password")
🚀 Basic Usage
Context Manager (Recommended)
from pysmscenter import SMSClient
with SMSClient("your_api_key") as client:
balance = client.balance.check()
print(balance.get("balance"))
📱 SMS
Send Single SMS
client.sms.send(
to="306912345678",
text="Hello World",
sender="MyApp"
)
Send Bulk SMS
numbers = ["306912345678", "306912345679"]
client.sms.bulk(
to=numbers,
text="Bulk message",
sender="MyApp"
)
Cancel Scheduled SMS
client.sms.cancel("sms_id_here")
📊 Account & Status
Check Balance
client.balance.check()
Check Delivery Status
client.status.sms("sms_id_here")
Get Recent Status Reports
client.status.get()
📖 History
Single SMS History
client.history.single_list()
Grouped SMS History
client.history.group_list()
👤 Contacts
List Contacts
client.contact.list()
Add Contact
client.contact.add(
mobile="306912345678",
name="John",
surname="Doe",
)
Update Contact
client.contact.update(
contact_id="12345",
name="Updated Name"
)
Delete Contact
client.contact.delete("12345")
👥 Groups
Create Group
client.group.add("Customers")
Add Contact to Group
client.group.add_contact(
group_id="123",
contact_id="456"
)
Remove Contact from Group
client.group.delete_contact(
group_id="123",
contact_id="456"
)
🔎 Mobile & HLR
Validate Mobile Number
client.mobile.check("306912345678")
HLR Lookup
client.hlr.lookup("306912345678")
🔐 Two Factor Authentication
Send 2FA Code
response = client.two_factor.send(
to="306912345678",
text="Your verification code is %%code%%"
)
Verify 2FA Code
client.two_factor.check(
auth_id="auth_id_from_send",
code="1234"
)
👥 Sub-Accounts
Create Sub-Account
client.user.add(
email="subaccount@example.com",
password="securepassword"
)
Top-up Sub-Account
client.user.topup(
user_id="12345",
sms="10",
cost="5"
)
⚠️ Error Handling
All API errors raise domain-specific exceptions:
from pysmscenter.exceptions import SMSExceptionError
try:
client.sms.send(...)
except SMSExceptionError as exc:
print("Error code:", exc.code)
print("Message:", exc.message)
Credential issues raise:
from pysmscenter.exceptions import CredentialError
🧪 Testing
Run the test suite:
pytest
📄 License
MIT License
🤝 Contributing
Contributions are welcome.
Please open an issue or submit a pull request.
Keywords
Python SMS SDK, SMS API client, Bulk SMS Python, SMS Gateway integration, SMSCenter API wrapper, SMS REST client, Two Factor Authentication API, HLR Lookup API, Python messaging library
Project details
Release history Release notifications | RSS feed
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 pysmscenter-0.1.2rc2.tar.gz.
File metadata
- Download URL: pysmscenter-0.1.2rc2.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bf2485adbf4c39370aa39d3906eb6598941b6c4e455204569315ac6c8444a99
|
|
| MD5 |
27bf8acb6a52405b97ce1567ce62ac79
|
|
| BLAKE2b-256 |
dadf7722a68b96f171d6fb68c8ca1fd7adec342e01dc1f9c8049c133530ea6e7
|
File details
Details for the file pysmscenter-0.1.2rc2-py3-none-any.whl.
File metadata
- Download URL: pysmscenter-0.1.2rc2-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f53c8192ca1f9b55cff1f7f22f0efc1ba486e6964c307a88ad3a16737c8de641
|
|
| MD5 |
7b03bbe8e05a67a031f7f28b4754cce8
|
|
| BLAKE2b-256 |
d864d8075270847c5260fef7032dd1bbda05a991498c1197533239cd7a5e45c6
|