Skip to content

Retrieve an email

One message, in full — including the body you sent and the attachments that went with it.

http
GET /v1/emails/{id}

Requires a Full access API key.

Example

bash
curl "https://api.sendgrail.com/v1/emails/4ef9a417-02e9-4d39-ad75-9611e0fcc33c" \
  -H "Authorization: Bearer $SENDGRAIL_API_KEY"
js
const res = await fetch(
  `https://api.sendgrail.com/v1/emails/${id}`,
  { headers: { Authorization: `Bearer ${process.env.SENDGRAIL_API_KEY}` } },
);
const email = await res.json();

Response

json
{
  "object": "email",
  "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
  "to": ["recipient@example.org"],
  "from": "Acme <hello@example.com>",
  "created_at": "2026-07-14T09:41:55+00:00",
  "subject": "Your receipt",
  "html": "<p>Thanks for your order.</p>",
  "text": "Thanks for your order.",
  "bcc": [],
  "cc": [],
  "reply_to": [],
  "headers": null,
  "last_event": "delivered",
  "scheduled_at": null,
  "attachments": [
    { "filename": "invoice.pdf", "content_type": "application/pdf", "size": 20418 }
  ]
}

attachments names what went out — never the bytes. To download one, use List attachments, which returns a short-lived signed URL per file.

An email belonging to another team returns 404 not_found — the same answer as one that doesn't exist, so an id can't be probed for existence.

See the email object for every field and status.

Transactional email on your own domain.