Mailgun cURL API


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"


Please support this site and join our Discord!