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,
      "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.

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, and open and click engagement. 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