agentlyleads docs
Emails API

GET /api/v1/emails

Requires the read:emails scope (or *).

List

GET /api/v1/emails?status=DRAFT&limit=50 HTTP/1.1
Host: agentlyleads.com
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ParameterDescription
statusDRAFT, SCHEDULED, QUEUED, SENT or FAILED
contactIdOnly emails to or from this contact
campaignIdOnly emails in this campaign
limit1 to 200, default 50

Rows are newest first and carry engagement flags:

{
  "emails": [
    {
      "id": "cmtsy2o2v05peii01g2ebysb0",
      "status": "SENT",
      "direction": "INBOUND",
      "subject": "Re: Buffalo David Bitton men's multipacks",
      "toEmail": "kevin@example.com",
      "fromEmail": "meg@example.com",
      "contact": { "id": "cmr8dlczc00xkic01prvioybz", "name": "Margaret Leung", "email": "meg@example.com" },
      "campaign": { "id": "cmtsv6tr704hxii01xyz", "name": "Buffalo David Bitton Multipacks" },
      "opened": false, "opens": 0, "clicks": 0, "replied": false, "unread": true,
      "humanOpens": 0, "automaticOpens": 0, "humanClicks": 0, "scannerClicks": 0,
      "sentAt": "2026-09-08T17:29:00.000Z",
      "createdAt": "2026-09-08T17:29:00.000Z"
    }
  ],
  "count": 1
}

Use it to find drafts awaiting approval, recover a draft id, or see which sends have been opened or answered.

opens and clicks count people only. humanOpens, automaticOpens, humanClicks and scannerClicks count individual events, with security-scanner clicks and automatic opens kept separate. See Opens and clicks.

One email

GET /api/v1/emails/cmtsy2o2v05peii01g2ebysb0 HTTP/1.1
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Returns the email with bodyHtml, the linked contact (including its externalId) and campaign, every message in the same thread, its attachments, open and click engagement, and a tracking object with every open and click and its bot verdict (Opens and clicks). Works for drafts, so an integration can read back exactly what it composed before releasing it. Unknown ids return 404.

Sending identities

GET /api/v1/emails/identities HTTP/1.1
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
  "identities": [
    { "address": "Howard Keil <howard@example.com>", "email": "howard@example.com", "default": true },
    { "address": "Kevin Holmes <kevin@example.com>", "email": "kevin@example.com", "default": false }
  ],
  "default": "Howard Keil <howard@example.com>"
}

Pass any listed email as from when drafting. Add ?asUserEmail= to see the mailboxes a particular member can send from.

On this page