List a contact's emails

Every email this contact was sent or is queued to get, newest first. Where each one came from, its subject, and whether it was delivered.

Updated ·2 min read
GET/v1/contacts/{contact}/emails

Requires the contacts:read scope.

Every email this contact was sent or is queued to get, newest first: broadcasts, automation steps, and the system emails LaunchList sends for a product action to work, such as the verification email or an invitation.

The email object#

Field Description
id The msg_ handle. Use it to page this list.
source.type broadcast, automation, lifecycle (a system email) or reward (a referral reward announcement).
source.id The bcd_ broadcast or aut_ automation handle. null for other sources.
source.name The broadcast or automation name, or the system email's name.
source.kind For a system email: verification, invitation, welcome or status_link. null otherwise.
subject The subject as this contact received it. null until the email is rendered for sending.
status queued, sent, delivered, bounced, complained, suppressed, failed or canceled.
unsubscribed Whether they unsubscribed using this email's link and are still unsubscribed. Broadcasts only, else null.
created_at When it was queued, ISO 8601.
sent_at When the email provider accepted it.
delivered_at When the receiving mail server accepted it.

suppressed means we held the email back because the contact unsubscribed, bounced or was otherwise no longer mailable by the time it was due. failed means it could not be handed to the email provider. canceled means the broadcast was canceled before it reached them.

The send address, the email body and provider message ids are never included.

Paging#

limit works as it does everywhere else, from 1 to 100, default 25. Pass the id of the last row you have as starting_after to get the next page.

Next#

Common questions

Why are there no opens or clicks?

Open and click tracking is off by default, so an empty value would read as "never opened" when the truth is "never measured". The history reports only what we know happened to the email.

Why is unsubscribed null on some rows?

Only a broadcast's unsubscribe link records which email it came from. For automation steps and system emails we cannot say which email someone unsubscribed from, so the field is null rather than a guess. The contact's own unsubscribed field is always accurate.

Was this page helpful?
curl "https://api.getlaunchlist.com/v1/contacts/con_4mKp9Wq2Rx/emails" \\
  -H "Authorization: Bearer llk_live_8xKq3Rp9Wm2Nz7Vt6yL1cG5dH0jA4sE8uNqB2fXk"
{
  "object": "list",
  "url": "/v1/contacts/con_4mKp9Wq2Rx/emails",
  "has_more": false,
  "data": [
    {
      "object": "email",
      "id": "msg_01jq8zk3m7xn2vb4rd5eempt9h",
      "source": {
        "type": "broadcast",
        "id": "bcd_7hTq2Lm9Pz",
        "name": "We launch on Tuesday",
        "kind": null
      },
      "subject": "Ada, we launch on Tuesday",
      "status": "delivered",
      "unsubscribed": false,
      "created_at": "2026-09-20T14:00:02+00:00",
      "sent_at": "2026-09-20T14:00:09+00:00",
      "delivered_at": "2026-09-20T14:00:11+00:00"
    },
    {
      "object": "email",
      "id": "msg_01jn4vw8c2qk5xz7hd3tbrmy6e",
      "source": {
        "type": "lifecycle",
        "id": null,
        "name": "Verification",
        "kind": "verification"
      },
      "subject": "Verify your email",
      "status": "delivered",
      "unsubscribed": null,
      "created_at": "2026-08-01T09:24:12+00:00",
      "sent_at": "2026-08-01T09:24:15+00:00",
      "delivered_at": "2026-08-01T09:24:16+00:00"
    }
  ]
}