This post goes over how to cURL Mailgun API:
Prerequisites
Save your Mailgun API key and domain to a variable:
export API_KEY="..."
export DOMAIN="mailgun.example.com"
Stats
See general stats:
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/stats/total?event=accepted&event=delivered&event=failed"
See time-based stats:
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/stats?event=delivered&duration=1d"
Events
Use events to see emails:
Mailgun keeps track of every inbound and outbound message event and stores this data for at least 3 days.
See yesterday’s failed emails:
BEGIN=$(date -u -v-1d -v0H -v0M -v0S +%s)
END=$(date -u -v-1d -v23H -v59M -v59S +%s)
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/events?event=failed&begin=$BEGIN&end=$END"
Filter yesterday emails by recipient:
BEGIN=$(date -u -v-1d -v0H -v0M -v0S +%s)
END=$(date -u -v-1d -v23H -v59M -v59S +%s)
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/events?recipient=$RECIPIENT&begin=$BEGIN&end=$END"
Script
See full script:
#!/usr/bin/env bash
API_KEY="..."
DOMAIN="..."
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/stats/total?event=accepted&event=delivered&event=failed"
BEGIN=$(date -u -v-1d -v0H -v0M -v0S +%s)
END=$(date -u -v-1d -v23H -v59M -v59S +%s)
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/events?event=failed&begin=$BEGIN&end=$END"
RECIPIENT="[email protected]"
curl -s --user "api:$API_KEY" \
"https://api.mailgun.net/v3/$DOMAIN/events?recipient=$RECIPIENT&begin=$BEGIN&end=$END"