Back to Docs

Campaigns API

Bulk messaging, scheduling, and analytics

Bulk Send

Millions of recipients

Schedule

Send at optimal times

Analytics

Real-time metrics

Multi-channel

SMS, WhatsApp, Email

Dual-Key Authentication

API KeyPermanent

X-Smsly-Key-Id: sk_live_xxx

SDK KeyRotatable

X-SMSLY-SDK-KEY: sdk_live_xxx

Quick Start

Python
from smsly import SMSly

# === DUAL KEY SECURITY ===
# Two keys required (both can be in .env or embedded):
# 1. API Key - for authentication
# 2. SDK Key - for SDK validation

client = SMSly(
    api_key="setup_api_your_key",   # From dashboard
    sdk_key="setup_sdk_your_key"    # From dashboard
)

# Create a campaign
campaign = client.campaigns.create(
    name="Summer Sale 2026",
    type="sms",  # or "whatsapp", "email"
    message="🔥 50% off everything! Use code SUMMER50",
    sender_id="MYSMSLY"
)
print(f"Campaign ID: {campaign.id}")

# Add recipients
client.campaigns.add_recipients(campaign.id, [
    "+1234567890",
    "+0987654321",
    # Or import from segment
])

# Schedule campaign
client.campaigns.schedule(
    campaign.id,
    send_at="2026-01-20 10:00:00",
    timezone="America/New_York"
)

# Or send immediately
client.campaigns.send(campaign.id)

# Get analytics
stats = client.campaigns.stats(campaign.id)
print(f"Sent: {stats.sent}")
print(f"Delivered: {stats.delivered}")
print(f"Clicked: {stats.clicked}")

API Endpoints

POST/v1/campaignsCreate campaign
GET/v1/campaignsList campaigns
GET/v1/campaigns/:idGet campaign details
POST/v1/campaigns/:id/sendStart campaign
POST/v1/campaigns/:id/pausePause campaign
GET/v1/campaigns/:id/statsGet campaign analytics

Ready to launch campaigns?

Get API Keys