---
title: "List and filter all conversation items in a conversation"
method: GET
path: "/conversations/{conversationId}/items"
tags: ["Conversations"]
---

# List and filter all conversation items in a conversation

`GET /conversations/{conversationId}/items`

This operation lists all conversations items available in a conversation. This is an eventually consistent view and may take a short time before new conversation items appear in results.

## Path parameters

- `conversationId` string, required

## Query parameters

- `pageSize` integer
- `order` 'newest_first' | 'oldest_first' — The order of the conversation items returned
- `paginationToken` string — Token given in a previous response to allow requesting the next page
- `startFrom` string, date-time

## Response `200`

Expected response to a valid request

- object
  - `conversationItems` ConversationItem[], required
    - `apiURL` string, url, required — An absolute URL for fetching this conversation item from the API
    - `appURL` string, url, required — An absolute URL to view the conversation item in the Spruce app.
    - `attachments` ConversationItemAttachment[], required — Attachments for the conversation item.
      - `data` union
        - ConversationItemAudioAttachment
          - `mimetype` string, required — The mimetype of the audio attachment.
          - `signedUrl` SignedUrl, required
            - `expiresAt` string, date-time, required — The date the signed URL expires.
            - `url` string, url, required — The signed URL.
          - `transcription` ConversationItemTranscription
            - `id` string, required — The id of the transcription job. Pass this to the [Transcription endpoint](/reference/transcription) to fetch the full transcription text.
            - `status` 'completed' | 'pending' | 'failed' | 'noSpeech', required — The current status of the transcription. When `pending`, the transcription is still being processed.
            - `summarizationStatus` 'completed' | 'pending' | 'failed' — The current status of the summarization, if the transcription is being summarized. Null when no summarization was requested.
        - ConversationItemDocumentAttachment
          - `mimetype` string, required — The mimetype of the document attachment.
          - `name` string, required — The name associated with the attached document.
          - `signedUrl` SignedUrl, required
            - `expiresAt` string, date-time, required — The date the signed URL expires.
            - `url` string, url, required — The signed URL.
        - ConversationItemEntityProfileAttachment
          - `title` string, required — The title associated with the attached entity profile.
          - `url` string, required — The URL of the entity profile.
        - ConversationItemImageAttachment
          - `mimetype` string, required — The mimetype of the image attachment.
          - `signedUrl` SignedUrl, required
            - `expiresAt` string, date-time, required — The date the signed URL expires.
            - `url` string, url, required — The signed URL.
        - ConversationItemVideoAttachment
          - `mimetype` string, required — The mimetype of the video attachment.
          - `signedUrl` SignedUrl, required
            - `expiresAt` string, date-time, required — The date the signed URL expires.
            - `url` string, url, required — The signed URL.
      - `title` string, required — The title of the attachment.
      - `type` 'audio' | 'carePlan' | 'document' | 'entityProfile' | 'genericUrl' | 'image' | 'paymentRequest' | 'video' | 'visit', required — The type of the attachment.
    - `author` ConversationItemAuthor, required
      - `deviceInformation` DeviceInformation
        - `accessID` string — The access ID of API credentials used to make the request.
        - `appVersion` string — The version of the app.
        - `device` string — The type of the device.
        - `deviceId` string — The id of the device.
        - `deviceModel` string — The model of the device.
        - `platform` string — The platform of the device.
      - `displayName` string, required
      - `id` string — The id of the entity that authored the conversation item, populated only when it identifies a stable Spruce entity. It will be set for items authored by a teammate, team, or your organization, and for items received from a saved contact through Spruce secure messaging (where the id matches the contact id). It will be omitted for items received from a contact over a standard channel (SMS, voice, email, or fax) because the sender's identity is derived from an endpoint (such as a phone number or email address) that can be reassigned to a different contact over time. It may also be omitted for system-generated items or when the author entity could not be resolved.
    - `buttons` ConversationItemButton[], required — The buttons associated with the conversation item.
      - `id` string, required — The id of the button.
      - `state` 'disabled' | 'normal' | 'selected', required — The state of the button.
      - `text` string, required — The text of the button.
    - `canDelete` boolean, required — If the conversation item can be deleted.
    - `conversation` Conversation
      - `apiURL` string, url, required — An absolute URL for fetching this conversation from the API
      - `appURL` string, url, required — An absolute URL to view the conversation in the Spruce app
      - `archived` boolean, required — Whether or not the conversation is archived
      - `assignedToMemberId` string — The id of the teammate the conversation is assigned to
      - `associatedContactIds` string[] — The ids of the contacts associated with the conversation. This may include contacts that are not a part of the conversation. For example, the conversation may be with parents, but associated with a contact representing their child.
      - `createdAt` string, date-time, required — The date the conversation was created
      - `externalParticipants` object[] — The external participants in the conversation.
        - `contact` string — The id of the contact associated with the participant. This will be omitted if the participant is not a saved contact.
        - `displayName` string, required — The display name of the participant
        - `endpoint` Endpoint
          - `channel` 'email' | 'phone' | 'fax' | 'secure', required — The channel of the endpoint (e.g. 'email', 'phone', 'fax', etc.). More endpoint channels may be added in the future, so ensure while parsing this that you gracefully handle any new/unexpected values.
          - `displayValue` string, required — The display value of the endpoint. This is the value that should be displayed to the user when showing the endpoint, along with the label if it's populated.
          - `id` string, required — The id of the endpoint. For secure (Spruce Link) endpoints, the id format depends on where the endpoint is returned: the list internal endpoints API returns the underlying organization invite id, while a secure endpoint that appears on a conversation is returned with a different, derived value. To determine whether a conversation belongs to a particular Spruce Link, compare `endpoint.rawValue` rather than `endpoint.id`. Endpoint ids for phone, fax, and email channels use the same format across responses.
          - `isInternal` boolean, required — Internal endpoints are endpoints that are owned by your organization, such as your organization's Spruce Phone Numbers or Spruce Links.
          - `label` string — The optional label of the endpoint
          - `object` string, required — String representing the object's type
          - `rawValue` string, required — The raw value of the endpoint. This can be used for programmatically comparing contact values, and is the stable identifier to use when matching a secure endpoint on a conversation back to the corresponding Spruce Link returned by the list internal endpoints API. The raw value for a phone/fax number will be in E164 format.
      - `id` string, required — Spruce's conversation ID
      - `internalEndpoint` Endpoint
        - `channel` 'email' | 'phone' | 'fax' | 'secure', required — The channel of the endpoint (e.g. 'email', 'phone', 'fax', etc.). More endpoint channels may be added in the future, so ensure while parsing this that you gracefully handle any new/unexpected values.
        - `displayValue` string, required — The display value of the endpoint. This is the value that should be displayed to the user when showing the endpoint, along with the label if it's populated.
        - `id` string, required — The id of the endpoint. For secure (Spruce Link) endpoints, the id format depends on where the endpoint is returned: the list internal endpoints API returns the underlying organization invite id, while a secure endpoint that appears on a conversation is returned with a different, derived value. To determine whether a conversation belongs to a particular Spruce Link, compare `endpoint.rawValue` rather than `endpoint.id`. Endpoint ids for phone, fax, and email channels use the same format across responses.
        - `isInternal` boolean, required — Internal endpoints are endpoints that are owned by your organization, such as your organization's Spruce Phone Numbers or Spruce Links.
        - `label` string — The optional label of the endpoint
        - `object` string, required — String representing the object's type
        - `rawValue` string, required — The raw value of the endpoint. This can be used for programmatically comparing contact values, and is the stable identifier to use when matching a secure endpoint on a conversation back to the corresponding Spruce Link returned by the list internal endpoints API. The raw value for a phone/fax number will be in E164 format.
      - `internalMemberIds` string[] — The ids of the teammates, teams and/or your organization that are members of the conversation.
      - `isReadOnly` boolean, required — If the conversation is read-only, messages cannot be sent to it.
      - `lastMessageAt` string, date-time — The time of the conversations latest message
      - `object` string, required — String representing the object's type
      - `subtitle` string — The subtitle of the conversation
      - `tags` ConversationTag[], required
        - `id` string, required — Spruce's conversation tag ID
        - `object` string, required — String representing the object's type
        - `value` string, required — The text value of a conversation tag
      - `title` string, required — The title of the conversation
      - `type` 'email' | 'phone' | 'secure' | 'fax' | 'team' | 'note' | 'other', required — The type of the conversation (e.g. 'email', 'phone', 'secure', etc.). Note that SMS will be in a 'phone' conversation, and video calls will be in a 'secure' conversation. More conversation types may be added in the future, so ensure while parsing this that you gracefully handle any new/unexpected values.
    - `conversationId` string, required — Spruce's conversation ID
    - `createdAt` string, date-time, required — The date time the conversation item was created.
    - `direction` 'inbound' | 'outbound' | 'none', required — The direction of the item relative to this organization. Possible values are `inbound`, `outbound` and `none`. `inbound` indicates a message received by the organization, `outbound` indicates a message sent to an external contact by a teammate in the organization. `none` indicates a message that is likely internal to the organization or one for which the direction cannot be determined.
    - `event` ConversationItemEvent
      - `data` union
        - ConversationItemPhoneCallEvent
          - `answered` boolean, required — If the call was answered.
          - `answeredBy` AnsweredBy
            - `externalNumber` string — the telephone number external to Spruce this call was answered by
            - `lineId` string — the ID of the phone line on the Spruce system this call was answered by
            - `teammateID` string — The id of the teammate
          - `callFlowMenuOption` string — For inbound calls that went through a Call Flow menu, the description of the specific menu option the caller selected (e.g., "Option 1 - Billing Questions"). This represents the final node reached in the call flow.
          - `callFlowTopLevelMenuOption` string — For inbound calls that went through a Call Flow menu with nested options, the description of the first-level (top-level) menu option the caller selected. This helps identify the main category chosen before any sub-menu navigation.
          - `duration` integer, required — The duration of the call in seconds.
          - `failed` boolean, required — If the call failed.
          - `initiatedBy` InitiatedBy
            - `lineId` string — the ID of the phone line on the Spruce system this call was initiated by
            - `teammateID` string — The id of the teammate
          - `recordings` ConversationItemAudioAttachment[] — The recordings of the call if any exist.
            - `mimetype` string, required — The mimetype of the audio attachment.
            - `signedUrl` SignedUrl, required
              - …
            - `transcription` ConversationItemTranscription
              - …
          - `spam` boolean, required — If the call was marked as spam.
          - `voicemail` ConversationItemAudioAttachment
            - `mimetype` string, required — The mimetype of the audio attachment.
            - `signedUrl` SignedUrl, required
              - …
            - `transcription` ConversationItemTranscription
              - …
        - ConversationItemVideoCallEvent
          - `answered` boolean, required — If the call was answered.
          - `duration` integer, required — The duration of the call in seconds.
          - `initiatedBy` string, required — The id of the teammate
      - `type` 'inboundCall' | 'inboundVideoCall' | 'outboundCall' | 'outboundVideoCall', required — The type of the event. Additional events will be added in the future, so any parsing of this field should gracefully handle unexpected values.
    - `id` string, required — The id of a conversation item.
    - `isInternalNote` boolean, required — If the conversation item is an internal note - which is visible only to the posting side of the conversation.
    - `modifiedAt` string, date-time, required — The date time the conversation item was last modified.
    - `object` string, required — String representing the object's type
    - `pages` ConversationItemPage[], required — The pages associated with the conversation item.
      - `id` string, required — The id of the page.
      - `memberId` string, required — The id of the teammate being paged.
      - `resolved` boolean, required — If the page has been resolved.
      - `resolvedAt` string, date-time — The date time the page was resolved at.
      - `resolvedByMemberId` string — The id of the teammate that resolved the page.
    - `requestId` string, required — The id of an asynchronous request
    - `text` string, required — The text of the conversation item. If the conversation item contains pages, they will be listed in the pages property.
  - `hasMore` boolean, required
  - `paginationToken` string — Token given in a previous response to allow requesting the next page
  - `totalCount` integer, required

## Other responses

- `400` — bad request
- `500` — unexpected error

---

[API](https://skmtc.net/sprucehealth/apis/spruce-health-api.md) · [All operations](https://skmtc.net/sprucehealth/apis/spruce-health-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sprucehealth/spruce-health-api/revisions/988e298cd9fd/schema)
