Official Python SDK for ADSMedia Email API
Project description
adsmedia
Official Python SDK for ADSMedia Email API.
Installation
pip install adsmedia
Quick Start
from adsmedia import ADSMedia
client = ADSMedia(api_key='your-api-key')
# Test connection
result = client.ping()
print(f"API is working! User ID: {result['userId']}")
# Send a single email
result = client.send(
to='recipient@example.com',
subject='Hello!',
html='<h1>Welcome!</h1>',
)
print(f"Email sent! Message ID: {result['message_id']}")
Features
- ✅ Full API coverage
- ✅ Type hints for IDE support
- ✅ Simple, Pythonic interface
- ✅ Automatic error handling
- ✅ Supports Python 3.8+
Usage Examples
Send Single Email (Transactional)
result = client.send(
to='user@example.com',
to_name='John Doe',
subject='Welcome to our service!',
html='<h1>Hello John!</h1><p>Thanks for signing up.</p>',
text='Hello John! Thanks for signing up.',
from_name='Support Team',
reply_to='support@yourcompany.com',
)
Send Batch Emails (Marketing)
result = client.send_batch(
recipients=[
{'email': 'user1@example.com', 'name': 'User 1'},
{'email': 'user2@example.com', 'name': 'User 2'},
],
subject='Hello %%First Name%%!',
html='<h1>Hi %%First Name%%!</h1><p>Check out our latest offers.</p>',
preheader='Exclusive deals inside',
from_name='Marketing Team',
)
print(f"Queued {result['recipients_count']} emails. Task ID: {result['task_id']}")
Campaign Management
# Create a campaign
campaign = client.create_campaign(
name='Newsletter Q1 2025',
subject='Monthly Update',
html='<h1>Newsletter</h1><p>Latest news...</p>',
preheader='Your monthly update is here',
)
# Get all campaigns
campaigns = client.get_campaigns()
# Update a campaign
client.update_campaign(campaign['id'], subject='Updated Subject')
# Delete a campaign
client.delete_campaign(campaign['id'])
Contact Lists
# Create a list
list_result = client.create_list(name='Newsletter Subscribers')
# Add contacts
client.add_contacts(list_result['id'], [
{'email': 'john@example.com', 'firstName': 'John', 'lastName': 'Doe'},
{'email': 'jane@example.com', 'firstName': 'Jane', 'lastName': 'Smith'},
])
# Get contacts
contacts = client.get_contacts(list_result['id'], limit=100)
# Split large list
client.split_list(list_result['id'], max_size=35000)
# Remove contacts
client.remove_contacts(list_result['id'], ['john@example.com'])
Schedule Sending
# Create a schedule
schedule = client.create_schedule(
campaign_id=45,
list_id=123,
server_id=1,
sender_name='John from Company',
schedule='2025-12-15 10:00:00',
)
# Update schedule
client.update_schedule(schedule['id'], sender_name='New Name')
# Pause/Resume/Stop
client.pause_schedule(schedule['id'])
client.resume_schedule(schedule['id'])
client.stop_schedule(schedule['id'])
Statistics
# Get overview stats
overview = client.get_overview_stats()
print(f"Total sent: {overview['sent']}, Opens: {overview['opens']}")
# Get campaign-specific stats
stats = client.get_campaign_stats(task_id=123)
# Get geographic stats
countries = client.get_country_stats(task_id=123)
# Get provider breakdown
providers = client.get_provider_stats(task_id=123)
# Get bounce details
bounces = client.get_bounce_details(task_id=123)
# Get events
opens = client.get_events(task_id=123, type='open', limit=100)
Domain Verification
verification = client.verify_domain(server_id=1)
print(f"SPF: {verification['checks']['spf']['status']}")
print(f"DKIM: {verification['checks']['dkim']['status']}")
print(f"DMARC: {verification['checks']['dmarc']['status']}")
Suppression Check
result = client.check_suppression('user@example.com')
if result.get('suppressed'):
print(f"Email is suppressed: {result['reason']}")
Error Handling
from adsmedia import ADSMedia, ADSMediaError
client = ADSMedia(api_key='your-api-key')
try:
result = client.send(to='invalid', subject='Test', html='<p>Test</p>')
except ADSMediaError as e:
print(f"API Error: {e.message}")
print(f"Status Code: {e.status_code}")
Configuration
client = ADSMedia(
api_key='your-api-key', # Required
base_url='https://api.adsmedia.live/v1', # Optional
timeout=30, # Optional: request timeout in seconds
)
Personalization Placeholders
Use these in subject and HTML content:
| Placeholder | Description |
|---|---|
%%First Name%% |
Recipient's first name |
%%Last Name%% |
Recipient's last name |
%%emailaddress%% |
Recipient's email |
%%Sender Name%% |
Sender display name |
%%unsubscribelink%% |
Unsubscribe URL |
%%webversion%% |
View in browser link |
Links
License
MIT © ADSMedia
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
adsmedia-1.0.0.tar.gz
(10.5 kB
view details)
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 adsmedia-1.0.0.tar.gz.
File metadata
- Download URL: adsmedia-1.0.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3f5dc742d0314ca605f903b949ced867c87c92313e318303b1fa2303226e15e
|
|
| MD5 |
8ced82169004f163d3dba922e5ded4e5
|
|
| BLAKE2b-256 |
e161217a82828b6a4cf2d98acce80437232e279e92bf40d073d10e58f737a871
|
File details
Details for the file adsmedia-1.0.0-py3-none-any.whl.
File metadata
- Download URL: adsmedia-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc57857ca0d553e16d51609a99c942bcb72961e1fe26ff2e6612eb807cbac13e
|
|
| MD5 |
edd5eef061772b46e24a471f1e825b7f
|
|
| BLAKE2b-256 |
66ce784753869f5e1712641a1e74d0c4b718f8729967fff4ed1394ae5e64abf5
|