Type-required messaging with built-in OTP, marketing, and transactional types
Send to 195+ countries
Ultra-fast delivery
Dual-key encryption
Instant delivery reports
All SMS API requests require both keys:
X-Smsly-Key-Id: sk_live_xxxX-SMSLY-SDK-KEY: sdk_live_xxxChoose your language. Languages without SDK use raw HTTP.
from smsly import SMSly
# Initialize with dual keys
client = SMSly(
api_key="sk_live_xxx",
sdk_key="sdk_live_xxx"
)
# Send OTP
response = client.sms.otp("+1234567890", "123456")
print(f"Message ID: {response.message_id}")
# Send marketing SMS with scheduling
client.sms.marketing(
"+1234567890",
"50% off today only!",
send_later="tomorrow 9am"
)
# Send transactional SMS
client.sms.transactional(
"+1234567890",
"Your order #12345 has shipped!"
)/v1/sms/otpSend OTP code/v1/sms/marketingSend marketing SMS/v1/sms/transactionalSend transactional SMS/v1/sms/customSend custom type SMS/v1/sms/bulkSend bulk SMS batch/v1/sms/:idGet message status/v1/smsList all messages/v1/sms/:id/cancelCancel scheduled messageOne-time passwords with auto-generated or custom codes
client.sms.otp(to, code)Promotional messages with unsubscribe handling
client.sms.marketing(to, msg)Order updates, alerts, notifications
client.sms.transactional(to, msg)