Appearance
List emails
Every email you've sent, newest first.
http
GET /v1/emailsRequires a Full access API key. A Sending key gets 403 restricted_api_key — a key that lives inside your application can send mail, but can't read your history back out.
Parameters
| Parameter | Default | Notes |
|---|---|---|
limit | 20 | 1–100. |
after | — | An email id. Returns the emails after it (older). |
before | — | An email id. Returns the emails before it (newer). |
Example
bash
curl "https://api.sendgrail.com/v1/emails?limit=2" \
-H "Authorization: Bearer $SENDGRAIL_API_KEY"js
const res = await fetch('https://api.sendgrail.com/v1/emails?limit=2', {
headers: { Authorization: `Bearer ${process.env.SENDGRAIL_API_KEY}` },
});
const { data, has_more } = await res.json();php
$response = $http->get('https://api.sendgrail.com/v1/emails', [
'headers' => ['Authorization' => 'Bearer '.getenv('SENDGRAIL_API_KEY')],
'query' => ['limit' => 2],
]);Response
json
{
"object": "list",
"has_more": true,
"data": [
{
"id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
"message_id": "0100019f5f93-5775-3459-00d0f1f6-000000",
"to": ["recipient@example.org"],
"from": "Acme <hello@example.com>",
"created_at": "2026-07-14T09:41:55+00:00",
"subject": "Your receipt",
"bcc": [],
"cc": [],
"reply_to": [],
"last_event": "delivered",
"scheduled_at": null
}
]
}last_event is the message's current state — see the email object.
The list omits bodies and tags
html, text and tags are left out of list rows — a page of 100 bodies would be megabytes you didn't ask for. Fetch the full object, tags included, with Retrieve an email.