Skip to content

List sequence messages

GET/v1/sequences/{id}/messages

Returns a paginated list of a sequence’s messages: every outbound email and LinkedIn message, and each enrollment’s first reply. Results are sorted by createdAt, newest first. Superseded outbound attempts are not included, and list items omit content; retrieve a message to read it. Use offset and limit to paginate through results, and bracketed filters to narrow the list. See List endpoints for more information about pagination.

Supported filters: contactId, enrollmentId, sequenceStepId, sequenceStepType (EMAIL, LINKEDIN_MESSAGE, LINKEDIN_INVITE), channel (EMAIL, LINKEDIN), direction (OUTBOUND, INBOUND) and status (AWAITING_REVIEW, SCHEDULED, QUEUED, SENT, SKIPPED, FAILED, CANCELLED), with [equal] or no operator; and sentAt, openedAt, readAt, repliedAt, bouncedAt, acceptedAt or receivedAt with [greaterThan], [greaterThanOrEqual], [lessThan] or [lessThanOrEqual] (ISO 8601 timestamps with a timezone). Filters are combined with AND; a status filter excludes incoming replies.

Required scope: sequences:read

Rate limit category: Search

Path ParametersExpand Collapse
id: string

Unique identifier of the sequence.

Query ParametersExpand Collapse
limit: optional number

Maximum number of records to return. Defaults to 25, maximum 25.

minimum1
maximum9007199254740991
offset: optional number

Number of records to skip for pagination. Defaults to 0.

minimum0
maximum9007199254740991
ReturnsExpand Collapse
SequenceListMessagesResponse object { data, object, totalCount }
data: array of object { id, acceptedAt, bouncedAt, 14 more } or object { id, channel, contactId, 7 more }
One of the following:
OutboundMessage object { id, acceptedAt, bouncedAt, 14 more }
id: string

Unique identifier of the message.

acceptedAt: string

When the connection request was accepted; null until then.

bouncedAt: string

When the email bounced; null until then.

channel: "EMAIL" or "LINKEDIN"

Channel the message went over.

One of the following:
"EMAIL"
"LINKEDIN"
contactId: string

ID of the contact.

createdAt: string

When the message was created, or when a reply was received. Lists sort by this field, newest first.

direction: "OUTBOUND"

Always OUTBOUND.

enrollmentId: string

ID of the enrollment the message belongs to.

openedAt: string

When the email was opened; null until then.

readAt: string

When the LinkedIn message was read; null until then.

reference: object { id, objectType } or object { id, objectType }

The email or LinkedIn message record behind this sequence message, readable with Retrieve an email or Retrieve a message under their own scopes; null when there is none.

One of the following:
Email object { id, objectType }
id: string

ID of the email.

objectType: "email"

Always email.

Message object { id, objectType }
id: string

ID of the message.

objectType: "message"

Always message.

repliedAt: string

When the contact replied to this message; null until then.

sentAt: string

When the message was sent; null until then.

sequenceStepId: string

ID of the step that sent the message or, for a reply, the step it replied to.

sequenceStepType: "EMAIL" or "LINKEDIN_MESSAGE" or "LINKEDIN_INVITE"

Type of that step.

One of the following:
"EMAIL"
"LINKEDIN_MESSAGE"
"LINKEDIN_INVITE"
status: "AWAITING_REVIEW" or "SCHEDULED" or "QUEUED" or 4 more

AWAITING_REVIEW is waiting for approval; SCHEDULED is composed and waiting for its send time; QUEUED is due and waiting on the sender. SENT, SKIPPED, FAILED and CANCELLED are final.

One of the following:
"AWAITING_REVIEW"
"SCHEDULED"
"QUEUED"
"SENT"
"SKIPPED"
"FAILED"
"CANCELLED"
statusChangedAt: string

When status last changed.

Reply object { id, channel, contactId, 7 more }
id: string

Unique identifier of the message.

channel: "EMAIL" or "LINKEDIN"

Channel the message went over.

One of the following:
"EMAIL"
"LINKEDIN"
contactId: string

ID of the contact.

createdAt: string

When the message was created, or when a reply was received. Lists sort by this field, newest first.

direction: "INBOUND"

Always INBOUND.

enrollmentId: string

ID of the enrollment the message belongs to.

receivedAt: string

When the reply was received.

reference: object { id, objectType } or object { id, objectType }

The email or LinkedIn message record behind this sequence message, readable with Retrieve an email or Retrieve a message under their own scopes; null when there is none.

One of the following:
Email object { id, objectType }
id: string

ID of the email.

objectType: "email"

Always email.

Message object { id, objectType }
id: string

ID of the message.

objectType: "message"

Always message.

sequenceStepId: string

ID of the step that sent the message or, for a reply, the step it replied to.

sequenceStepType: "EMAIL" or "LINKEDIN_MESSAGE" or "LINKEDIN_INVITE"

Type of that step.

One of the following:
"EMAIL"
"LINKEDIN_MESSAGE"
"LINKEDIN_INVITE"
object: "list"
totalCount: number
minimum-9007199254740991
maximum9007199254740991

List sequence messages

curl https://api.lightfield.app/v1/sequences/$ID/messages \
    -H 'Lightfield-Version: 2026-03-01' \
    -H "Authorization: Bearer $API_KEY"
{
  "data": [
    {
      "id": "id",
      "acceptedAt": "acceptedAt",
      "bouncedAt": "bouncedAt",
      "channel": "EMAIL",
      "contactId": "contactId",
      "createdAt": "createdAt",
      "direction": "OUTBOUND",
      "enrollmentId": "enrollmentId",
      "openedAt": "openedAt",
      "readAt": "readAt",
      "reference": {
        "id": "id",
        "objectType": "email"
      },
      "repliedAt": "repliedAt",
      "sentAt": "sentAt",
      "sequenceStepId": "sequenceStepId",
      "sequenceStepType": "EMAIL",
      "status": "AWAITING_REVIEW",
      "statusChangedAt": "statusChangedAt"
    }
  ],
  "object": "list",
  "totalCount": -9007199254740991
}
Returns Examples
{
  "data": [
    {
      "id": "id",
      "acceptedAt": "acceptedAt",
      "bouncedAt": "bouncedAt",
      "channel": "EMAIL",
      "contactId": "contactId",
      "createdAt": "createdAt",
      "direction": "OUTBOUND",
      "enrollmentId": "enrollmentId",
      "openedAt": "openedAt",
      "readAt": "readAt",
      "reference": {
        "id": "id",
        "objectType": "email"
      },
      "repliedAt": "repliedAt",
      "sentAt": "sentAt",
      "sequenceStepId": "sequenceStepId",
      "sequenceStepType": "EMAIL",
      "status": "AWAITING_REVIEW",
      "statusChangedAt": "statusChangedAt"
    }
  ],
  "object": "list",
  "totalCount": -9007199254740991
}