Skip to content

Commit 7f26112

Browse files
feat(posts): add "Mailgun cURL API"
Post: 2026-03-27-mailgun-curl-api.md
1 parent 3c16d59 commit 7f26112

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
layout: post
3+
title: Mailgun cURL API
4+
date: 2026-03-27 18:16:39
5+
excerpt: How to cURL Mailgun API.
6+
categories: mailgun curl api
7+
---
8+
9+
This post goes over how to cURL Mailgun API:
10+
11+
- [Prerequisites](#prerequisites)
12+
- [Stats](#stats)
13+
- [Events](#events)
14+
- [Script](#script)
15+
16+
## Prerequisites
17+
18+
Save your Mailgun API key and domain to a variable:
19+
20+
```bash
21+
export API_KEY="..."
22+
export DOMAIN="mailgun.example.com"
23+
```
24+
25+
## Stats
26+
27+
See general [stats](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/stats):
28+
29+
```bash
30+
curl -s --user "api:$API_KEY" \
31+
"https://api.mailgun.net/v3/$DOMAIN/stats/total?event=accepted&event=delivered&event=failed"
32+
```
33+
34+
See time-based stats:
35+
36+
```bash
37+
curl -s --user "api:$API_KEY" \
38+
"https://api.mailgun.net/v3/$DOMAIN/stats?event=delivered&duration=1d"
39+
```
40+
41+
## Events
42+
43+
Use [events](https://documentation.mailgun.com/docs/mailgun/api-reference/send/mailgun/events) to see emails:
44+
45+
> Mailgun keeps track of every inbound and outbound message event and stores this data for at least 3 days.
46+
47+
See yesterday's failed emails:
48+
49+
```bash
50+
BEGIN=$(date -u -v-1d -v0H -v0M -v0S +%s)
51+
END=$(date -u -v-1d -v23H -v59M -v59S +%s)
52+
53+
curl -s --user "api:$API_KEY" \
54+
"https://api.mailgun.net/v3/$DOMAIN/events?event=failed&begin=$BEGIN&end=$END"
55+
```
56+
57+
Filter yesterday emails by recipient:
58+
59+
```bash
60+
BEGIN=$(date -u -v-1d -v0H -v0M -v0S +%s)
61+
END=$(date -u -v-1d -v23H -v59M -v59S +%s)
62+
63+
curl -s --user "api:$API_KEY" \
64+
"https://api.mailgun.net/v3/$DOMAIN/events?recipient=$RECIPIENT&begin=$BEGIN&end=$END"
65+
```
66+
67+
## Script
68+
69+
See full script:
70+
71+
```bash
72+
#!/usr/bin/env bash
73+
74+
API_KEY="..."
75+
DOMAIN="..."
76+
77+
curl -s --user "api:$API_KEY" \
78+
"https://api.mailgun.net/v3/$DOMAIN/stats/total?event=accepted&event=delivered&event=failed"
79+
80+
BEGIN=$(date -u -v-1d -v0H -v0M -v0S +%s)
81+
END=$(date -u -v-1d -v23H -v59M -v59S +%s)
82+
83+
curl -s --user "api:$API_KEY" \
84+
"https://api.mailgun.net/v3/$DOMAIN/events?event=failed&begin=$BEGIN&end=$END"
85+
86+
RECIPIENT="user@example.com"
87+
88+
curl -s --user "api:$API_KEY" \
89+
"https://api.mailgun.net/v3/$DOMAIN/events?recipient=$RECIPIENT&begin=$BEGIN&end=$END"
90+
```

0 commit comments

Comments
 (0)