API object type

conversation

A conversation object contains information about a channel-like thing in Slack. It might be a public channel, a private channel, a direct message, or a multi-person direct message.

You'll find these objects in the Conversations API.

{
    "ok": true,
    "channel": {
        "id": "C123456",
        "name": "general",
        "is_channel": true,
        "is_group": false,
        "is_im": false,
        "created": 1449252889,
        "creator": "W123456",
        "is_archived": false,
        "is_general": true,
        "unlinked": 0,
        "name_normalized": "general",
        "is_read_only": false,
        "is_shared": false,
        "is_ext_shared": false,
        "is_org_shared": false,
        "pending_shared": [],
        "is_pending_ext_shared": false,
        "is_member": true,
        "is_private": false,
        "is_mpim": false,
        "last_read": "1502126650.228446",
        "topic": {
            "value": "For public discussion of generalities",
            "creator": "W123456",
            "last_set": 1449709364
        },
        "purpose": {
            "value": "This part of the workspace is for fun. Make fun here.",
            "creator": "W123456",
            "last_set": 1449709364
        },
        "previous_names": [ "specifics", "abstractions", "etc" ],
        "num_members": 23,
        "locale": "en-US"
    }
}

The conversational booleans

  • is_archived indicates a conversation is archived, frozen in time.
  • is_channel indicates whether a conversation is a channel. Private channels created before March 2021 (with IDs that begin with G) will return false, and is_group will be true instead. Use is_private to determine whether a channel is private or public.
  • is_ext_shared indicates whether a conversation is part of a Shared Channel with a remote organization. Your app should make sure the data it shares in such a channel is appropriate for both workspaces. is_shared will also be true.
  • is_general means the channel is the workspace's "general" discussion channel (even if it may not be named #general). That might be important to your app because almost every user is a member.
  • is_group means the channel is a private channel created before March 2021. is_private will also be true.
  • is_im means the conversation is a direct message between two distinguished individuals or a user and a bot. is_private will also be true.
  • is_member indicates whether the user, bot user or Slack app associated with the token making the API call is itself a member of the conversation.
  • is_mpim represents an unnamed private conversation between multiple users. is_private will also be true.
  • is_org_shared explains whether this shared channel is shared between Enterprise Grid workspaces within the same organization. It's a little different from (externally) Shared Channels yet is_shared will be true.
  • is_pending_ext_shared means the conversation is ready to become an is_ext_shared channel but needs some kind of approval or sign off. Best to treat it as if it were a shared channel, even if it traverses only one workspace.
  • is_private means the conversation is privileged between two or more members. Meet their privacy expectations.
  • is_read_only means the conversation can't be written to by the user performing the API call.
  • is_shared means the conversation is in some way shared between multiple workspaces. Look for is_ext_shared and is_org_shared to learn which kind it is, and if that matters, act accordingly.

Other attributes

The name parameter indicates the name of the channel-like thing, without a leading hash sign. Don't get too attached to that name. It might change. Don't even bother storing it. When thinking about channel-like things, think about their IDs, their type and the team/workspace they belong to.

creator is the user ID of the member that created this conversation. created is a Unix timestamp of when the conversation was created.

conversation_host_id appears on shared channel objects and indicates the "host" of the shared channel. The value may contain a workspace's ID (beginning with T) or an enterprise grid organization's ID (beginning with E).

is_archived will be true if the channel is archived.

is_general will be true if this channel is the "general" channel that includes all regular team members. In most teams this is called #general but some teams have renamed it.

topic and purpose provide information about the channel topic and purpose.

is_member will be true if the calling member is part of the channel.

Some API methods (such as conversations.join) will include extra state information for channels when the calling user is a member:

  • last_read is the timestamp for the last message the calling user has read in this channel.
  • unread_count is a full count of visible messages that the calling user has yet to read.
  • unread_count_display is a count of messages that the calling user has yet to read that matter to them (this means it excludes things like join/leave messages).
  • latest is the latest message in the channel.

These channel objects are not the same object type as those for private channels created before March 2021, which are considered group objects.