Skip to content

Retrieve a message

client.message.retrieve(stringid, RequestOptionsoptions?): MessageRetrieveResponse { id, accessLevel, createdAt, 6 more }
GET/v1/messages/{id}

Retrieves a single message by its ID. The message text is redacted based on the caller-specific channel-visibility resolution, and the response includes a read-only accessLevel. Attachment file IDs are exposed via relationships.$attachment (same shape as email attachments); fetch their contents with GET /v1/files/{id}/url.

Required scope: messages:read

Rate limit category: Read

ParametersExpand Collapse
id: string

Unique identifier of the message to retrieve.

ReturnsExpand Collapse
MessageRetrieveResponse { id, accessLevel, createdAt, 6 more }
id: string

Unique identifier for the entity.

accessLevel: "FULL" | "METADATA"

The caller’s resolved access level for this message.

One of the following:
"FULL"
"METADATA"
createdAt: string

ISO 8601 timestamp of when the entity was created.

fields: Record<string, Fields>

Map of field names to their typed values. System fields are prefixed with $ (e.g. $name, $email); custom attributes use their bare slug.

value: string | number | boolean | 3 more | null

The field value, or null if unset.

One of the following:
string
number
boolean
Array<string>
Address { city, country, latitude, 5 more }
city?: string | null

City name.

country?: string | null

2-letter ISO 3166-1 alpha-2 country code.

latitude?: number | null

Latitude coordinate.

longitude?: number | null

Longitude coordinate.

postalCode?: string | null

Postal or ZIP code.

state?: string | null

State or province.

street?: string | null

Street address line 1.

street2?: string | null

Street address line 2.

FullName { firstName, lastName }
firstName?: string | null

The contact’s first name.

lastName?: string | null

The contact’s last name.

valueType: "ADDRESS" | "CHECKBOX" | "CURRENCY" | 12 more

The data type of the field.

One of the following:
"ADDRESS"
"CHECKBOX"
"CURRENCY"
"DATETIME"
"EMAIL"
"FULL_NAME"
"MARKDOWN"
"MULTI_SELECT"
"NUMBER"
"SINGLE_SELECT"
"SOCIAL_HANDLE"
"TELEPHONE"
"TEXT"
"URL"
"HTML"
objectType: "message"

Always message.

relationships: Record<string, Relationships>

Map of relationship names to their associated entities. System relationships are prefixed with $ (e.g. $owner, $contact).

cardinality: string

Whether the relationship is has_one or has_many.

objectType: string

The type of the related object (e.g. account, contact).

values: Array<string>

IDs of the related entities.

updatedAt: string | null

ISO 8601 timestamp of when the entity was last updated, or null.

externalId?: string | null

External identifier for the entity, or null if unset.

Retrieve a message

import Lightfield from 'lightfield';

const client = new Lightfield({
  apiKey: 'My API Key',
});

const messageRetrieveResponse = await client.message.retrieve('id');

console.log(messageRetrieveResponse.id);
{
  "id": "msg_cm0abc456def789",
  "accessLevel": "FULL",
  "createdAt": "2026-05-01T09:00:00.000Z",
  "fields": {
    "$text": {
      "value": "Thanks — pushed the fix, should be live shortly.",
      "valueType": "TEXT"
    },
    "$sentAt": {
      "value": "2026-05-01T08:59:30.000Z",
      "valueType": "DATETIME"
    },
    "$provider": {
      "value": "SLACK",
      "valueType": "TEXT"
    },
    "$providerThreadId": {
      "value": "1714553970.123456",
      "valueType": "TEXT"
    },
    "$editedAt": {
      "value": "string",
      "valueType": "DATETIME"
    }
  },
  "httpLink": null,
  "objectType": "message",
  "relationships": {
    "$channel": {
      "cardinality": "has_one",
      "objectType": "channel",
      "values": [
        "chn_cm2def456ghi789"
      ]
    },
    "$attachment": {
      "cardinality": "has_many",
      "objectType": "file",
      "values": [
        "fil_cm3attach789xyz012"
      ]
    }
  },
  "updatedAt": "2026-05-01T09:00:00.000Z",
  "externalId": "externalId"
}
Returns Examples
{
  "id": "msg_cm0abc456def789",
  "accessLevel": "FULL",
  "createdAt": "2026-05-01T09:00:00.000Z",
  "fields": {
    "$text": {
      "value": "Thanks — pushed the fix, should be live shortly.",
      "valueType": "TEXT"
    },
    "$sentAt": {
      "value": "2026-05-01T08:59:30.000Z",
      "valueType": "DATETIME"
    },
    "$provider": {
      "value": "SLACK",
      "valueType": "TEXT"
    },
    "$providerThreadId": {
      "value": "1714553970.123456",
      "valueType": "TEXT"
    },
    "$editedAt": {
      "value": "string",
      "valueType": "DATETIME"
    }
  },
  "httpLink": null,
  "objectType": "message",
  "relationships": {
    "$channel": {
      "cardinality": "has_one",
      "objectType": "channel",
      "values": [
        "chn_cm2def456ghi789"
      ]
    },
    "$attachment": {
      "cardinality": "has_many",
      "objectType": "file",
      "values": [
        "fil_cm3attach789xyz012"
      ]
    }
  },
  "updatedAt": "2026-05-01T09:00:00.000Z",
  "externalId": "externalId"
}