Slack · Schema
Slack Channel
A Slack conversation object representing a channel, direct message, multi-person direct message, or group conversation. This is the unified model returned by the conversations.* family of Web API methods, which consolidated the legacy channels.*, groups.*, im.*, and mpim.* endpoints. The type of conversation is identified by boolean flags (is_channel, is_group, is_im, is_mpim) and the is_private flag. Channels are uniquely identified by their id field, with public channels starting with C, private channels and multi-person DMs starting with G, and direct messages starting with D.
BotsChatCollaborationMessagingProductivityT1Team Communication
Properties
| Name | Type | Description |
|---|---|---|
| id | string | The unique identifier for this conversation. Public channels begin with C, private channels and multi-person DMs begin with G, and direct messages begin with D. |
| name | string | The name of the channel without the leading # sign. Channel names can contain lowercase letters, numbers, hyphens, and underscores, with a maximum length of 80 characters. Not present for direct messa |
| name_normalized | string | A normalized, lowercase version of the channel name. Useful for case-insensitive comparisons and sorting. |
| is_channel | boolean | Whether this conversation is a public channel. Public channels are visible to all members of the workspace and can be joined by anyone. |
| is_group | boolean | Whether this conversation is a private channel. Private channels are invite-only and not visible in the channel browser. |
| is_im | boolean | Whether this conversation is a direct message between two people. |
| is_mpim | boolean | Whether this conversation is a multi-person direct message. MPIMs are group DMs between 3 or more people. |
| is_private | boolean | Whether this conversation is private. True for private channels, DMs, and MPIMs. False for public channels. |
| is_archived | boolean | Whether the channel is archived. Archived channels are read-only and do not accept new messages. They can be unarchived by workspace admins. |
| is_general | boolean | Whether this is the workspace's #general channel. Every workspace has exactly one general channel that all members are automatically added to. |
| is_shared | boolean | Whether the channel is shared with another workspace using Slack Connect. |
| is_ext_shared | boolean | Whether the channel is shared with an external organization via Slack Connect. External shared channels allow cross-organization collaboration. |
| is_org_shared | boolean | Whether the channel is shared across the entire Enterprise Grid organization. Org-wide channels are available to all workspaces in the grid. |
| is_pending_ext_shared | boolean | Whether there is a pending Slack Connect invitation for this channel that has not yet been accepted. |
| is_member | boolean | Whether the authenticated user or bot is a member of this conversation. Users must be members to read history or post messages in private channels. |
| is_open | boolean | Whether the direct message or MPIM is currently open in the user's sidebar. Only relevant for DMs and MPIMs. |
| is_frozen | boolean | Whether the channel is frozen. Frozen channels do not accept new messages. |
| is_read_only | boolean | Whether the channel is read-only. In read-only channels, only admins and approved users can post. |
| is_thread_only | boolean | Whether the channel only allows threaded replies. Top-level posts are not permitted. |
| is_non_threadable | boolean | Whether threading is disabled in this channel. |
| created | integer | Unix timestamp (in seconds) of when the conversation was created. |
| creator | string | The user ID of the member who created this channel. Not present for DMs. |
| updated | integer | Unix timestamp of the last update to the conversation metadata (not the last message). |
| unlinked | integer | The number of times this shared channel has been unlinked from a partner workspace. |
| topic | object | The channel's topic. Topics appear below the channel name in the Slack client and help describe what the channel is currently being used for. |
| purpose | object | The channel's purpose. Purposes describe the intended use of the channel and help users decide whether to join. |
| previous_names | array | A list of all previous names this channel has had. Useful for tracking channel history and identifying channels that have been renamed. |
| num_members | integer | The approximate number of members in the channel. Only included in responses when explicitly requested via the include_num_members parameter. May not be perfectly accurate for large channels. |
| locale | string | The IETF language code for the channel's locale. Only included in responses when explicitly requested via the include_locale parameter. |
| user | string | For direct messages, the user ID of the other participant. Not present for channels, groups, or MPIMs. |
| shared_team_ids | array | An array of team (workspace) IDs that share this channel. Present for shared and Slack Connect channels. |
| pending_shared | array | An array of team IDs for pending shared channel invitations. |
| pending_connected_team_ids | array | An array of team IDs for pending Slack Connect invitations. |
| parent_conversation | stringnull | The parent conversation ID if this is a sub-conversation or thread-only channel. Null for top-level conversations. |
| context_team_id | string | The team (workspace) ID providing context for this conversation. Useful in Enterprise Grid environments where channels may be shared across workspaces. |
| properties | object | Additional channel properties including canvas and tab configurations. |
| last_read | string | The timestamp of the last message read by the authenticated user in this channel. |
| latest | object | The most recent message in the channel. Only included in some API responses. |
| unread_count | integer | The number of unread messages the authenticated user has in this channel. |
| unread_count_display | integer | The number of unread messages to display (may differ from unread_count based on notification settings). |
| priority | number | A priority value used for sorting channels in the sidebar. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schema.slack.dev/channel",
"title": "Slack Channel",
"description": "A Slack conversation object representing a channel, direct message, multi-person direct message, or group conversation. This is the unified model returned by the conversations.* family of Web API methods, which consolidated the legacy channels.*, groups.*, im.*, and mpim.* endpoints. The type of conversation is identified by boolean flags (is_channel, is_group, is_im, is_mpim) and the is_private flag. Channels are uniquely identified by their id field, with public channels starting with C, private channels and multi-person DMs starting with G, and direct messages starting with D.",
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "string",
"description": "The unique identifier for this conversation. Public channels begin with C, private channels and multi-person DMs begin with G, and direct messages begin with D.",
"pattern": "^[CGDW][A-Z0-9]+$"
},
"name": {
"type": "string",
"description": "The name of the channel without the leading # sign. Channel names can contain lowercase letters, numbers, hyphens, and underscores, with a maximum length of 80 characters. Not present for direct messages.",
"maxLength": 80,
"pattern": "^[a-z0-9][a-z0-9_-]*$"
},
"name_normalized": {
"type": "string",
"description": "A normalized, lowercase version of the channel name. Useful for case-insensitive comparisons and sorting."
},
"is_channel": {
"type": "boolean",
"description": "Whether this conversation is a public channel. Public channels are visible to all members of the workspace and can be joined by anyone."
},
"is_group": {
"type": "boolean",
"description": "Whether this conversation is a private channel. Private channels are invite-only and not visible in the channel browser."
},
"is_im": {
"type": "boolean",
"description": "Whether this conversation is a direct message between two people."
},
"is_mpim": {
"type": "boolean",
"description": "Whether this conversation is a multi-person direct message. MPIMs are group DMs between 3 or more people."
},
"is_private": {
"type": "boolean",
"description": "Whether this conversation is private. True for private channels, DMs, and MPIMs. False for public channels."
},
"is_archived": {
"type": "boolean",
"description": "Whether the channel is archived. Archived channels are read-only and do not accept new messages. They can be unarchived by workspace admins."
},
"is_general": {
"type": "boolean",
"description": "Whether this is the workspace's #general channel. Every workspace has exactly one general channel that all members are automatically added to."
},
"is_shared": {
"type": "boolean",
"description": "Whether the channel is shared with another workspace using Slack Connect."
},
"is_ext_shared": {
"type": "boolean",
"description": "Whether the channel is shared with an external organization via Slack Connect. External shared channels allow cross-organization collaboration."
},
"is_org_shared": {
"type": "boolean",
"description": "Whether the channel is shared across the entire Enterprise Grid organization. Org-wide channels are available to all workspaces in the grid."
},
"is_pending_ext_shared": {
"type": "boolean",
"description": "Whether there is a pending Slack Connect invitation for this channel that has not yet been accepted."
},
"is_member": {
"type": "boolean",
"description": "Whether the authenticated user or bot is a member of this conversation. Users must be members to read history or post messages in private channels."
},
"is_open": {
"type": "boolean",
"description": "Whether the direct message or MPIM is currently open in the user's sidebar. Only relevant for DMs and MPIMs."
},
"is_frozen": {
"type": "boolean",
"description": "Whether the channel is frozen. Frozen channels do not accept new messages."
},
"is_read_only": {
"type": "boolean",
"description": "Whether the channel is read-only. In read-only channels, only admins and approved users can post."
},
"is_thread_only": {
"type": "boolean",
"description": "Whether the channel only allows threaded replies. Top-level posts are not permitted."
},
"is_non_threadable": {
"type": "boolean",
"description": "Whether threading is disabled in this channel."
},
"created": {
"type": "integer",
"description": "Unix timestamp (in seconds) of when the conversation was created."
},
"creator": {
"type": "string",
"description": "The user ID of the member who created this channel. Not present for DMs.",
"pattern": "^[UW][A-Z0-9]+$"
},
"updated": {
"type": "integer",
"description": "Unix timestamp of the last update to the conversation metadata (not the last message)."
},
"unlinked": {
"type": "integer",
"description": "The number of times this shared channel has been unlinked from a partner workspace."
},
"topic": {
"type": "object",
"description": "The channel's topic. Topics appear below the channel name in the Slack client and help describe what the channel is currently being used for.",
"properties": {
"value": {
"type": "string",
"description": "The topic text. Supports mrkdwn formatting. Maximum 250 characters.",
"maxLength": 250
},
"creator": {
"type": "string",
"description": "The user ID of the person who last set the topic.",
"pattern": "^[UW][A-Z0-9]*$"
},
"last_set": {
"type": "integer",
"description": "Unix timestamp of when the topic was last set. 0 if never set."
}
},
"required": [
"value",
"creator",
"last_set"
]
},
"purpose": {
"type": "object",
"description": "The channel's purpose. Purposes describe the intended use of the channel and help users decide whether to join.",
"properties": {
"value": {
"type": "string",
"description": "The purpose text. Supports mrkdwn formatting. Maximum 250 characters.",
"maxLength": 250
},
"creator": {
"type": "string",
"description": "The user ID of the person who last set the purpose.",
"pattern": "^[UW][A-Z0-9]*$"
},
"last_set": {
"type": "integer",
"description": "Unix timestamp of when the purpose was last set. 0 if never set."
}
},
"required": [
"value",
"creator",
"last_set"
]
},
"previous_names": {
"type": "array",
"description": "A list of all previous names this channel has had. Useful for tracking channel history and identifying channels that have been renamed.",
"items": {
"type": "string"
}
},
"num_members": {
"type": "integer",
"description": "The approximate number of members in the channel. Only included in responses when explicitly requested via the include_num_members parameter. May not be perfectly accurate for large channels.",
"minimum": 0
},
"locale": {
"type": "string",
"description": "The IETF language code for the channel's locale. Only included in responses when explicitly requested via the include_locale parameter."
},
"user": {
"type": "string",
"description": "For direct messages, the user ID of the other participant. Not present for channels, groups, or MPIMs.",
"pattern": "^[UW][A-Z0-9]+$"
},
"shared_team_ids": {
"type": "array",
"description": "An array of team (workspace) IDs that share this channel. Present for shared and Slack Connect channels.",
"items": {
"type": "string",
"pattern": "^T[A-Z0-9]+$"
}
},
"pending_shared": {
"type": "array",
"description": "An array of team IDs for pending shared channel invitations.",
"items": {
"type": "string"
}
},
"pending_connected_team_ids": {
"type": "array",
"description": "An array of team IDs for pending Slack Connect invitations.",
"items": {
"type": "string"
}
},
"parent_conversation": {
"type": ["string", "null"],
"description": "The parent conversation ID if this is a sub-conversation or thread-only channel. Null for top-level conversations."
},
"context_team_id": {
"type": "string",
"description": "The team (workspace) ID providing context for this conversation. Useful in Enterprise Grid environments where channels may be shared across workspaces.",
"pattern": "^T[A-Z0-9]+$"
},
"properties": {
"type": "object",
"description": "Additional channel properties including canvas and tab configurations.",
"properties": {
"tabs": {
"type": "array",
"description": "An array of tab objects associated with the channel.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
},
"canvas": {
"type": "object",
"description": "The channel canvas configuration.",
"properties": {
"file_id": {
"type": "string"
},
"is_empty": {
"type": "boolean"
},
"quip_thread_id": {
"type": "string"
}
}
}
}
},
"last_read": {
"type": "string",
"description": "The timestamp of the last message read by the authenticated user in this channel.",
"pattern": "^[0-9]+\\.[0-9]+$"
},
"latest": {
"type": "object",
"description": "The most recent message in the channel. Only included in some API responses."
},
"unread_count": {
"type": "integer",
"description": "The number of unread messages the authenticated user has in this channel.",
"minimum": 0
},
"unread_count_display": {
"type": "integer",
"description": "The number of unread messages to display (may differ from unread_count based on notification settings).",
"minimum": 0
},
"priority": {
"type": "number",
"description": "A priority value used for sorting channels in the sidebar."
}
}
}