Documentation Index
Fetch the complete documentation index at: https://docs.mailglyph.com/llms.txt
Use this file to discover all available pages before exploring further.
Use a secret key client for campaign methods.
from mailglyph import MailGlyph
client = MailGlyph("sk_your_secret_key")
List campaigns (campaigns.list)
page = client.campaigns.list(
page=1,
page_size=20,
status="DRAFT",
)
print(page.total, page.total_pages, len(page.data), len(page.campaigns))
Create a campaign (campaigns.create)
campaign_all = client.campaigns.create(
name="Launch campaign",
subject="Introducing our new feature",
body="<h1>Big news</h1><p>Check out what is new.</p>",
from_email="[email protected]",
audience_type="ALL",
)
print(campaign_all.id, campaign_all.status)
campaign_filtered = client.campaigns.create(
name="Subscribed users campaign",
subject="Feature update",
body="<p>Only subscribed users receive this.</p>",
from_email="[email protected]",
audience_type="FILTERED",
audience_condition={
"logic": "AND",
"groups": [
{
"filters": [{"field": "subscribed", "operator": "equals", "value": True}]
}
],
},
)
print(campaign_filtered.id)
Audience: segment
campaign_segment = client.campaigns.create(
name="Segment campaign",
subject="Offer for premium users",
body="<p>This goes to one saved segment.</p>",
from_email="[email protected]",
audience_type="SEGMENT",
segment_id="seg_123",
)
print(campaign_segment.id)
Get one campaign (campaigns.get)
campaign = client.campaigns.get(campaign_all.id)
print(campaign.name, campaign.status)
Update a campaign (campaigns.update)
updated = client.campaigns.update(
campaign_all.id,
subject="Updated subject line",
reply_to="[email protected]",
)
print(updated.subject, updated.reply_to)
Send a campaign now (campaigns.send)
send_result = client.campaigns.send(campaign_all.id)
print(send_result)
print(send_result.success, send_result.message, send_result.data.id)
Schedule a campaign (campaigns.send with scheduled_for)
scheduled_result = client.campaigns.send(campaign_all.id, scheduled_for="2026-03-01T10:00:00Z")
print(scheduled_result.success, scheduled_result.message)
Send a test email (campaigns.test)
test_result = client.campaigns.test(campaign_all.id, email="[email protected]")
print(test_result)
Fetch campaign stats (campaigns.stats)
stats = client.campaigns.stats(campaign_all.id)
print(stats)
Cancel a scheduled campaign (campaigns.cancel)
cancelled = client.campaigns.cancel(campaign_all.id)
print(cancelled.id, cancelled.status)
Async equivalents
from mailglyph import AsyncMailGlyph
async def run() -> None:
async with AsyncMailGlyph("sk_your_secret_key") as client:
page = await client.campaigns.list(page=1, page_size=20)
created = await client.campaigns.create(
name="Async campaign",
subject="Async subject",
body="<p>Async body</p>",
from_email="[email protected]",
audience_type="ALL",
)
fetched = await client.campaigns.get(created.id)
await client.campaigns.update(fetched.id, subject="Async updated")
await client.campaigns.send(fetched.id)
await client.campaigns.send(fetched.id, scheduled_for="2026-03-01T10:00:00Z")
await client.campaigns.test(fetched.id, email="[email protected]")
await client.campaigns.stats(fetched.id)
await client.campaigns.cancel(fetched.id)
print(page.total)
See full details in the Campaigns API reference.