Bulk Operations
Examples for efficiently managing multiple recipients at once.
Bulk Add Recipients
Add multiple recipients to a campaign in a single API call:
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.walletwerk.eu/api/v1';
async function bulkAddRecipients(campaignId, recipients) {
const response = await fetch(
`${BASE_URL}/campaigns/${campaignId}/recipients/bulk`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
recipients: recipients,
sendEmail: true
})
}
);
if (!response.ok) {
throw new Error(`Failed to add recipients: ${response.statusText}`);
}
const data = await response.json();
console.log(`Created: ${data.data.created}, Failed: ${data.data.failed}`);
if (data.data.errors && data.data.errors.length > 0) {
console.error('Errors:', data.data.errors);
}
return data.data;
}
// Example usage
const recipients = [
{
email: 'user1@example.com',
name: 'User One',
recipientData: { ticketNumber: 'TICKET-001' }
},
{
email: 'user2@example.com',
name: 'User Two',
recipientData: { ticketNumber: 'TICKET-002' }
}
];
bulkAddRecipients('campaign_abc123', recipients);
import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.walletwerk.eu/api/v1'
def bulk_add_recipients(campaign_id, recipients):
headers = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
payload = {
'recipients': recipients,
'sendEmail': True
}
response = requests.post(
f'{BASE_URL}/campaigns/{campaign_id}/recipients/bulk',
headers=headers,
json=payload
)
response.raise_for_status()
data = response.json()
print(f"Created: {data['data']['created']}, Failed: {data['data']['failed']}")
if data['data'].get('errors'):
print('Errors:', data['data']['errors'])
return data['data']
# Example usage
recipients = [
{
'email': 'user1@example.com',
'name': 'User One',
'recipientData': {'ticketNumber': 'TICKET-001'}
},
{
'email': 'user2@example.com',
'name': 'User Two',
'recipientData': {'ticketNumber': 'TICKET-002'}
}
]
bulk_add_recipients('campaign_abc123', recipients)
Bulk Invite Recipients
Invite multiple recipients who already have wallet cards:
async function bulkInviteRecipients(campaignId, limit = 100) {
const response = await fetch(
`${BASE_URL}/campaigns/${campaignId}/recipients/bulk-invite`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
sendEmail: true,
limit: limit,
email: {
subject: 'Your ticket is ready!',
body: 'Hi {{name}}, your ticket for {{eventName}} is ready!',
buttonText: 'Add to Wallet'
}
})
}
);
if (!response.ok) {
throw new Error(`Failed to invite recipients: ${response.statusText}`);
}
const data = await response.json();
console.log(`Invited: ${data.data.invited}`);
console.log(`Emails sent: ${data.data.emailsSent}`);
console.log(`Remaining: ${data.data.remaining}`);
// If there are more recipients, call again
if (data.data.remaining > 0) {
console.log(`Calling again to invite ${data.data.remaining} more recipients...`);
return bulkInviteRecipients(campaignId, limit);
}
return data.data;
}
// Invite all recipients with status "created"
bulkInviteRecipients('campaign_abc123');
def bulk_invite_recipients(campaign_id, limit=100):
headers = {
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
payload = {
'sendEmail': True,
'limit': limit,
'email': {
'subject': 'Your ticket is ready!',
'body': 'Hi {{name}}, your ticket for {{eventName}} is ready!',
'buttonText': 'Add to Wallet'
}
}
response = requests.post(
f'{BASE_URL}/campaigns/{campaign_id}/recipients/bulk-invite',
headers=headers,
json=payload
)
response.raise_for_status()
data = response.json()
print(f"Invited: {data['data']['invited']}")
print(f"Emails sent: {data['data']['emailsSent']}")
print(f"Remaining: {data['data']['remaining']}")
# If there are more recipients, call again
if data['data']['remaining'] > 0:
print(f"Calling again to invite {data['data']['remaining']} more recipients...")
return bulk_invite_recipients(campaign_id, limit)
return data['data']
# Invite all recipients with status "created"
bulk_invite_recipients('campaign_abc123')
The bulk invite endpoint processes up to 100 recipients per call. If remaining > 0, call the endpoint again to invite the next batch.