Slack 数据 API:工作区聊天、成员与文件
Slack 是 Slack Technologies 推出的职场即时通讯应用——这家公司由 Stewart Butterfield 联合创办,2014 年正式对外发布 Slack,2021 年以约 277 亿美元的交易被 Salesforce 收购——它用按频道组织、可全局搜索的工作区取代内部邮件往来。在 Android 上,成员先凭邮箱或公司域名找到所在工作区,再用密码、魔法链接或公司单点登录(例如基于 SAML 的 Okta)登录,进入首页:侧边栏分组列出星标项、公开与私有频道以及私信,未读圆点与提及徽标逐级汇总为应用图标上的角标数字。会话视图可向上翻阅历史,显示置顶消息与“N 条新消息”横幅;回复可展开为线程,并可选择同时发送到频道;“稍后处理”列表保存待回看的消息;频道详情页展示主题、描述与成员数。新消息、输入状态与在线状态经实时连接即时送达,网络切换后自动经备用连接恢复。共享频道(Slack Connect)把工作区与合作伙伴组织的人员连接起来,多频道与单频道访客可与正式成员、管理员、所有者和机器人同处一个工作区;点开头像即可查看成员资料卡,包括职位、代词、当地时间、在线或离开状态以及“正在 Huddle 中”之类的自定义状态,成员也可随时发起 Huddle 进行语音或视频沟通。文件页汇集共享的文档、图片与画布;搜索页可在消息、文件、人员与频道之间切换,并支持 from: 与 in: 筛选;“我”页可把自己设为离开、按时长暂停通知(请勿打扰),并在同一应用内切换多个工作区;付费工作区还可解锁企业搜索等进阶能力。Slack 在团队沟通领域与 Microsoft Teams、Google Chat、Zoom Workplace、Discord、Mattermost 和 Cisco Webex 竞争,其 Android 应用被美国、印度、巴西等地的企业与分布式团队用来协调项目、发布公告和处理故障响应。
频道、私信与线程中的消息都以时间线记录分页返回——每条消息带 author_id、text、ts、thread_ts 与 reply_count,客户端生成的 client_msg_id 用于乐观发送去重,分页靠 has_more 与 next_cursor,被删除的消息以 deleted_ts 标记,顶部附带会话的 pin_count 与 unread_count_display。发出的消息会拿到服务端分配的规范 ts 与 channel_id,线程回复还会通过 also_send_to_channel 记录是否同时发到频道;实时连接凭证(primary_url、fallback_url、ttl_seconds、region)则在两次轮询之间把新消息、输入状态与在线状态推送到客户端。围绕这些时间线的是逐会话计数——频道、群组私信与私信上的 has_unreads、mention_count、latest_ts、last_read_ts 与 history_stale 标志,另有线程与稍后处理的未读数、app_badge 总数及其 fetched_at 时间戳。
在此之前,工作区发现把邮箱或域名解析为 workspace_id、workspace_name、workspace_url、email_domains、sso_enabled、password_signin_allowed、device_check_required、sso_providers 列表与 icons,登录则签发会话 token 以及 member_id、member_email。登录后的引导记录随后携带已登录的 me 与 workspace、channels 与 direct_messages 列表、starred 星标、prefs 偏好、dnd 窗口、plan_features、other_workspaces 以及可选的 rotated_token,并以 cache_version 与 unchanged_channel_ids 标版本。频道记录补充 topic、description、creator_id、created、member_count、unread_count 以及 is_private、is_archived、is_member、is_shared、is_external 标志,可据此区分 Slack Connect 共享频道与内部频道。成员资料卡携带 handle、full_name、display_name、email、title、phone、pronouns、status、timezone、tz_offset、locale、presence、has_2fa、deactivated、avatar 多尺寸头像与管理员/所有者/访客/机器人 role 标志;工作区成员统计把人数拆分为 full 正式成员、guests_multi_channel、guests_single_channel、admins、owners、bots、deactivated、invited、online 与 active。共享文件列表返回 id、created、title、name、filetype、mimetype、size、owner_id、channel_ids、comments_count、is_external、download_url 与 permalink,并给出含 total 与 pages 的 paging 分页块;搜索结果以 items 返回,附带 pagination 与 filter_suggestions,覆盖 module 指定的消息、文件、人员与频道模块;手动在线状态写入 presence;请勿打扰暂停则报告 paused、ends_at、remaining_seconds 与 indefinite。
HR 与 IT 团队可以借助成员统计与资料卡让员工目录与工作区保持同步,无需抓取人员页;安全团队可以把各成员的 has_2fa 与 role 同工作区的 sso_enabled 设置对照核查。副收件箱或值班机器人可以轮询未读计数,只在 history_stale 翻转时才分页拉取时间线,从而只呈现仍有未读的会话;合规团队可以逐个频道遍历共享文件,以文件页展示的同一批文件 id 为键,为文档与画布建立留存或 DLP 清单;复盘 wiki 则可以保存事故关键词的搜索命中——query、items 与 pagination——引用与应用内搜索页完全一致的结果。openData Studio 把这些消息、频道、成员、文件与工作区记录变成可调用的开放数据,直接服务于上述集成。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
按邮箱或域名查找工作区
POST
/v1/workspaces/lookuposint把邮箱或工作区域名解析为工作区 id、名称、URL 与 SSO 标志,供登录页在密码、魔法链接或 SAML 跳转前使用。
认证方式: 无需鉴权——登录前的公开工作区发现。后续请求携带登录时签发的会话令牌。
- workspace_id
- workspace_name
- workspace_url
- email_domains
- sso_enabled
- password_signin_allowed
- device_check_required
- sso_providers
- icons
POST /v1/workspaces/lookup HTTP/1.1 Content-Type: application/json { "email": "[email protected]" }{ "ok": true, "workspace_id": "W7Q2K9D", "workspace_name": "Example Corp", "workspace_url": "https://example-corp.example.com/", "email_domains": [ "example.com" ], "sso_enabled": true, "password_signin_allowed": false, "device_check_required": false, "sso_providers": [ { "name": "Okta", "type": "saml" } ], "icons": { "small": "https://cdn.example.com/ws/w7q2k9d_68.png", "large": "https://cdn.example.com/ws/w7q2k9d_132.png" } }登录并签发工作区会话令牌
POST
/v1/workspaces/{workspaceId}/sessionsosint对工作区成员鉴权,返回会话令牌以及后续已登录请求携带的成员与工作区标识。
认证方式: 邮箱加密码(或魔法链接验证码)。返回的令牌用于之后所有已登录请求。
- workspace_id
- token
- member_id
- member_email
POST /v1/workspaces/W7Q2K9D/sessions HTTP/1.1 Content-Type: application/json { "email": "[email protected]", "password": "<redacted>" }{ "ok": true, "workspace_id": "W7Q2K9D", "token": "sess_example_7f3a9c21", "member_id": "M4H8P2L", "member_email": "[email protected]" }引导已登录客户端会话
POST
/v1/workspaces/{workspaceId}/bootopendata登录后填充首页:已登录成员、工作区、私信与频道列表、免打扰窗口、用户偏好、套餐功能开关以及可选的轮换会话令牌。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- me
- workspace
- cache_version
- direct_messages
- channels
- dnd
- prefs
- emoji_cache_ts
- starred
- plan_features
- rotated_token
- other_workspaces
- unchanged_channel_ids
POST /v1/workspaces/W7Q2K9D/boot HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "cache_version": "v12", "since": 1759000000 }{ "ok": true, "me": { "id": "M4H8P2L", "handle": "alex.rivera", "full_name": "Alex Rivera", "workspace_id": "W7Q2K9D", "timezone": "America/Los_Angeles", "presence": "active" }, "workspace": { "id": "W7Q2K9D", "name": "Example Corp", "subdomain": "example-corp" }, "cache_version": "v12", "direct_messages": [ { "id": "DM91X2", "member_id": "M0A1B2C" } ], "channels": [ { "id": "CH55Y7", "name": "platform" } ], "dnd": { "enabled": false, "next_start": 0, "next_end": 0 }, "prefs": { "muted_channels": [], "highlight_words": [] }, "emoji_cache_ts": 1758900000, "starred": [ "CH55Y7" ], "plan_features": [ "enterprise_search" ], "rotated_token": "sess_example_rotated", "other_workspaces": [ { "id": "W7Q2K9D", "name": "Example Corp" } ], "unchanged_channel_ids": [] }读取未读、提及与线程计数
POST
/v1/workspaces/{workspaceId}/badge-countsopendata返回各频道、群组私信与私信的未读/提及计数,以及驱动侧边栏圆点与应用图标角标的线程、稍后处理徽章。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- channels
- group_dms
- direct_messages
- threads
- saved
- app_badge
- fetched_at
- has_unreads
- mention_count
- latest_ts
- last_read_ts
- history_stale
POST /v1/workspaces/W7Q2K9D/badge-counts HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "include_threads": true, "include_files": true }{ "ok": true, "channels": [ { "id": "CH55Y7", "has_unreads": true, "mention_count": 2, "latest_ts": "1759000123.000200", "last_read_ts": "1758996400.000100", "history_stale": false } ], "group_dms": [], "direct_messages": [ { "id": "DM91X2", "has_unreads": false, "mention_count": 0, "latest_ts": "1758980000.000050", "last_read_ts": "1758980000.000050", "history_stale": false } ], "threads": { "has_unreads": true, "mention_count": 1, "unread_count": 4 }, "saved": { "unread_count": 0 }, "app_badge": 3, "fetched_at": "1759000400.000000" }签发实时消息连接凭证
POST
/v1/realtime/socket-ticketsopendata签发短时有效的 WebSocket 地址(含备用地址与 TTL),供 Android 客户端用于实时消息、输入状态与在线状态总线。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- primary_url
- fallback_url
- ttl_seconds
- region
POST /v1/realtime/socket-tickets HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "workspace_id": "W7Q2K9D" }{ "ok": true, "primary_url": "wss://rt.example.com/socket?ticket=<redacted>", "fallback_url": "wss://rt-backup.example.com/socket?ticket=<redacted>", "ttl_seconds": 3600, "region": "us-east" }分页读取频道或私信消息时间线
POST
/v1/channels/{channelId}/timelineopendata分页返回频道、私有群组或私信的消息时间线(messages、has_more、pin_count、unread_count_display),供会话视图渲染。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- messages
- has_more
- pin_count
- oldest_ts
- latest_ts
- is_limited
- unread_count_display
- deleted_ts
- next_cursor
- author_id
- text
- ts
- client_msg_id
- thread_ts
- reply_count
POST /v1/channels/CH55Y7/timeline HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "limit": 50, "before_ts": null, "inclusive": true }{ "ok": true, "messages": [ { "type": "message", "author_id": "M4H8P2L", "text": "Ship the billing hotfix after standup", "ts": "1759000123.000200", "client_msg_id": "8c3e1a90-4b11-4d2e-a7c4-0f8e6b1d2a33", "thread_ts": null, "reply_count": 0 } ], "has_more": true, "pin_count": 1, "oldest_ts": "1758800000.000001", "latest_ts": "1759000123.000200", "is_limited": false, "unread_count_display": 3, "deleted_ts": [], "next_cursor": "Y3Vyc29yOjE3NTg3OTk5MDA=" }加载侧边栏频道元数据
POST
/v1/channels/{channelId}/detailsopendata返回频道记录(id、name、topic、description、成员标志、unread_count、member_count),用于绘制频道标题与侧边栏名册。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- channel
- id
- name
- created
- creator_id
- is_private
- is_archived
- is_member
- is_shared
- is_external
- topic
- description
- member_count
- unread_count
- last_read_ts
- latest_ts
- workspace_id
POST /v1/channels/CH55Y7/details HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "include_counts": true }{ "ok": true, "channel": { "id": "CH55Y7", "name": "platform", "created": 1609459200, "creator_id": "M4H8P2L", "is_private": false, "is_archived": false, "is_member": true, "is_shared": false, "is_external": false, "topic": { "value": "On-call + incidents", "set_by": "M4H8P2L", "set_at": 1758000000 }, "description": { "value": "Platform engineering", "set_by": "M4H8P2L", "set_at": 1609459300 }, "member_count": 42, "unread_count": 3, "last_read_ts": "1758996400.000100", "latest_ts": "1759000123.000200", "workspace_id": "W7Q2K9D" } }向频道或线程发消息
POST
/v1/channels/{channelId}/messagesopendata把撰写的消息(或线程回复)发到频道或私信,并返回规范的 ts、频道 id 与 message 载荷,供输入框在本地落盘。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- ts
- channel_id
- message
- text
- client_msg_id
- thread_ts
- also_send_to_channel
- author_id
POST /v1/channels/CH55Y7/messages HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "text": "Ship the billing hotfix after standup", "client_msg_id": "8c3e1a90-4b11-4d2e-a7c4-0f8e6b1d2a33", "thread_ts": null, "also_send_to_channel": false }{ "ok": true, "ts": "1759000123.000200", "channel_id": "CH55Y7", "message": { "type": "message", "author_id": "M4H8P2L", "text": "Ship the billing hotfix after standup", "ts": "1759000123.000200", "client_msg_id": "8c3e1a90-4b11-4d2e-a7c4-0f8e6b1d2a33" } }读取成员资料卡
POST
/v1/members/{memberId}/cardosint返回资料卡背后的成员记录:id、工作区、全名、email、title、phone、pronouns、状态、时区、管理员/访客标志与在线状态。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- member
- id
- workspace_id
- handle
- deactivated
- full_name
- display_name
- title
- phone
- pronouns
- status
- timezone
- tz_offset
- avatar
- role
- presence
- has_2fa
- locale
POST /v1/members/M4H8P2L/card HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "include_locale": true }{ "ok": true, "member": { "id": "M4H8P2L", "workspace_id": "W7Q2K9D", "handle": "alex.rivera", "deactivated": false, "full_name": "Alex Rivera", "display_name": "alex", "email": "[email protected]", "title": "Product Manager", "phone": "+14255550123", "pronouns": "they/them", "status": { "text": "In a huddle", "emoji": ":headphones:", "expires_at": 1759004000 }, "timezone": "America/Los_Angeles", "tz_offset": -25200, "avatar": { "small": "https://cdn.example.com/avatars/alex_72.png", "large": "https://cdn.example.com/avatars/alex_192.png" }, "role": { "is_admin": false, "is_owner": false, "is_guest": false, "is_bot": false }, "presence": "active", "has_2fa": true, "locale": "en-US" } }列出频道内共享文件
POST
/v1/channels/{channelId}/shared-filesopendata分页返回频道或工作区文件页(id、title、filetype、mimetype、上传者、频道、paging.total),用于渲染共享文档、图片与画布。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- files
- paging
- id
- created
- title
- name
- filetype
- mimetype
- owner_id
- channel_ids
- size
- download_url
- permalink
- is_external
- comments_count
- total
- pages
POST /v1/channels/CH55Y7/shared-files HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "page": 1, "per_page": 20, "types": "all" }{ "ok": true, "files": [ { "id": "FL31Z8", "created": 1758900123, "title": "Q3 billing hotfix.pdf", "name": "q3-billing-hotfix.pdf", "filetype": "pdf", "mimetype": "application/pdf", "owner_id": "M4H8P2L", "channel_ids": [ "CH55Y7" ], "size": 248832, "download_url": "https://files.example.com/FL31Z8/q3-billing-hotfix.pdf", "permalink": "https://example-corp.example.com/files/FL31Z8", "is_external": false, "comments_count": 1 } ], "paging": { "per_page": 20, "total": 54, "page": 1, "pages": 3 } }搜索消息、文件与人员
POST
/v1/workspace-search/{module}opendata运行应用内搜索模块(消息、文件、人员、频道),返回 query、items、pagination 与 filter_suggestions,供搜索页使用。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- query
- module
- filters
- items
- pagination
- filter_suggestions
POST /v1/workspace-search/messages HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "query": "billing hotfix", "per_page": 20, "page": 1 }{ "ok": true, "query": "billing hotfix", "module": "messages", "filters": "in:#platform", "items": [ { "id": "1759000123.000200", "channel": { "id": "CH55Y7", "name": "platform" }, "author": "alex.rivera", "text": "Ship the billing hotfix after standup", "ts": "1759000123.000200" } ], "pagination": { "total_count": 12, "page": 1, "per_page": 20, "page_count": 1 }, "filter_suggestions": { "from": [ "M4H8P2L" ], "in": [ "CH55Y7" ] } }设置成员手动在线状态
POST
/v1/me/presenceopendata写入已登录成员的手动在线状态(away 或 auto),同事会在资料卡与私信标题上看到。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- ok
- presence
POST /v1/me/presence HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "presence": "away" }{ "ok": true, "presence": "away" }暂停通知(请勿打扰)
POST
/v1/me/notification-pauseopendata按分钟开启请勿打扰,返回暂停标志、结束时间与剩余秒数,供暂停通知控件使用。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- paused
- ends_at
- remaining_seconds
- indefinite
POST /v1/me/notification-pause HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json { "minutes": 60 }{ "ok": true, "paused": true, "ends_at": 1759004000, "remaining_seconds": 3600, "indefinite": false }读取工作区成员构成
POST
/v1/workspaces/{workspaceId}/member-censusopendata返回工作区人口统计(正式成员、多频道与单频道访客、管理员、所有者、机器人、已邀请、在线、活跃),供工作区目录与管理界面使用。
认证方式: Authorization: Bearer <工作区会话令牌>,由工作区登录调用签发
- members
- full
- guests_multi_channel
- guests_single_channel
- admins
- owners
- bots
- deactivated
- invited
- online
- active
POST /v1/workspaces/W7Q2K9D/member-census HTTP/1.1 Authorization: Bearer <session-token> Content-Type: application/json {}{ "ok": true, "members": { "full": 412, "guests_multi_channel": 18, "guests_single_channel": 6, "admins": 9, "owners": 2, "bots": 27, "deactivated": 41, "invited": 5, "online": 86, "active": 390 } }
数据类别
- 工作区身份
- 会话引导
- 未读计数
- 频道元数据
- 消息
- 成员资料
- 文件
- 搜索
- 在线状态
- 请勿打扰
数据使用场景与案例
工作区目录叠加
拉取 /v1/members/{memberId}/card(full_name、email、title、phone、pronouns、timezone)以及 /v1/workspaces/{workspaceId}/member-census(正式成员、访客、管理员、在线、活跃),让 HR 或 IT 目录与 Slack 工作区人口保持同步,而无需抓取人员页。
频道未读对账
轮询 /v1/workspaces/{workspaceId}/badge-counts 获取各频道 has_unreads、mention_count、latest_ts 与 last_read_ts,并在 history_stale 翻转时分页 /v1/channels/{channelId}/timeline,让副收件箱或值班机器人只呈现仍有未读的会话。
共享文件盘点
按频道遍历 /v1/channels/{channelId}/shared-files(id、title、filetype、mimetype、owner_id、channel_ids、paging.total),构建留存或 DLP 清单,键为文件页展示的同一文件 id。
搜索驱动的知识沉淀
用 /v1/workspace-search/messages 重放事故关键词查询,保存 query、items 与 pagination,让复盘 wiki 引用应用内搜索页返回的同一批命中。
常见问题
Slack Android 应用如何鉴权数据调用?
公开的 /v1/workspaces/lookup 解析工作区及其 SSO 选项,随后 /v1/workspaces/{workspaceId}/sessions 返回会话令牌、member_id 与 member_email。之后的首页引导、时间线、资料卡、文件与发消息等调用都以 Bearer 方式携带该令牌。
哪些数据驱动未读角标与首页?
/v1/workspaces/{workspaceId}/boot 在登录后填充 me、workspace、channels、direct_messages、prefs 与 dnd。/v1/workspaces/{workspaceId}/badge-counts 随后返回各频道 has_unreads、mention_count、latest_ts 与 last_read_ts,以及线程与稍后处理徽章;实时更新经 /v1/realtime/socket-tickets 签发的连接推送。
能否读取频道消息、文件与成员资料?
可以。/v1/channels/{channelId}/timeline 分页返回含 ts、text、author_id 的 messages 与 has_more;/v1/channels/{channelId}/shared-files 返回文件 id、title、filetype、mimetype 与 paging;/v1/members/{memberId}/card 返回 full_name、email、title、phone、pronouns 与 presence。均需已登录的工作区令牌。
这是 Slack 的公开 Web API 吗?
不是。本页路径是对应用界面(登录、首页、频道、资料卡、文件与搜索)背后数据的示意性建模,并非任何生产接口的复刻,也不是 Slack 文档化的开发者平台。
与 Slack 相似的应用
- Microsoft Teams — Microsoft Teams 是带嵌套团队与频道的职场聊天应用,会议最多支持 300 人,常与 Slack 并列为职场即时通讯的主要选择。
- Google Chat — Google Chat 是谷歌的职场即时通讯工具,支持私信、群聊与空间,常被拿来与 Slack 对照。
- Zoom Workplace — Zoom Workplace 内含 Zoom Chat,可向联系人、群组和频道发消息,也能从对话一键开会,或为每次会议自动建频道。
- Discord — Discord 是即时通讯与网络语音平台,提供文字频道和可随时进出的语音频道;因界面与频道、通话能力相近,常被拿来与 Slack 比较。
- Mattermost — Mattermost 是可自托管的团队消息平台,用于公司内部讨论、文件共享与外部集成,常被当作 Slack 的替代方案。
- Cisco Webex — Cisco Webex 是思科的协作套件,产品包括 Webex Messaging 以及会议与通话,面向已使用思科会议体系的组织。
更多通讯协作类应用
相关主题
- slack 数据 api
- slack android 数据模型
- slack 频道消息时间线
- slack 未读角标
- slack 成员资料卡
- slack 共享文件
- slack 工作区搜索
- slack 工作区会话令牌
- slack 请勿打扰
- slack 工作区成员统计
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业