Slack API Documentation Audit Report
Class: Technical Writing Mentorship ProgramAssignment: Audit Review of Slack API Documentation
URL: https://docs.slack.dev/reference/ Sections Evaluated:
- App Manifest
- Block Kit
- Interaction Payloads
- Objects
Audit Summary
App Manifest
App Manifest
Strengths:
- Clear explanation of what manifests are and why they matter
- Strong YAML/JSON examples
- Good versioning and portability guidance
- Includes UI- and API-based creation workflows
- Limited real-world manifest examples
- Needs more best practices (naming, environment management)
- Some error-handling details shallow
Block Kit
Block Kit
Strengths:
- Clear conceptual model: blocks → elements → composition objects
- Strong JSON examples
- Covers surfaces (messages, modals, Home tab)
- Easy navigation by block type
- Deep learning curve due to nested JSON
- Lacks visual design patterns or layout tips
- Minimal platform rendering notes (mobile/web)
Interaction Payloads
Interaction Payloads
Strengths:
- Good overview of interaction flow and trigger conditions
- Payload types are well grouped
- Strong property tables and schema detail
- Realistic example payloads
- Lacks end-to-end examples (trigger → payload → app)
- No lifecycle diagrams
- Limited testing/debugging guidance
Objects
Objects
Strengths:
- Comprehensive catalog of Slack object types
- Detailed field references (including Enterprise fields)
- Strong cross-links to events and methods
- Deprecation notes included
- Some legacy/deprecated types mixed in with current ones
- High volume of fields may overwhelm users
- No “commonly used fields” summaries
Detailed Analysis of Key Slack API Reference Areas
App Manifest
The App Manifest system is Slack’s configuration-as-code layer for apps. A manifest is a YAML or JSON document that bundles all of an app’s configuration: display metadata, features, OAuth scopes, event subscriptions, interactivity settings, and more. From a documentation perspective, Slack splits this into:- A conceptual guide (“App manifests” and “Configuring apps with app manifests”) that explains:
- What a manifest is.
- How to create an app from a manifest.
- How to update existing apps by editing the manifest.
- How to share and reuse manifests across environments (e.g., dev vs prod).
- A schema reference (“App manifest reference”) that describes the structure of the manifest:
display_information(name, description, background color, etc.).features(bot user, app home, slash commands, workflow functions, etc.).oauth_config(scopes, redirect URLs).settings(event subscriptions, interactivity request URLs, org install flags, etc.).
apps.manifest.create– create an app from a JSON manifest.apps.manifest.update– modify an existing app’s configuration.apps.manifest.delete– delete an app.apps.manifest.export– export an app’s manifest.apps.manifest.validate– validate a manifest against Slack’s schema.
apps.manifest.create documents an invalid_manifest error with a structured errors array that points directly to the invalid part of the manifest via JSON pointers, which is an advanced and very developer-friendly design.
Documentation strengths:
- Clear separation between “why and how” (guides) and “exact shape” (reference).
- Strong emphasis on reusability and environment cloning, which gives real-world context.
- Good error diagnostics documented for manifest validation.
Block Kit
Block Kit is Slack’s JSON-based UI framework for building rich messages and app surfaces (messages, modals, and App Home). The core idea is that you compose ablocks array, where each item is a block (e.g., section, actions, image, input), and each block can contain elements and composition objects such as buttons, select menus, or text objects.
The documentation is organized as:
- A high-level overview explaining:
- Blocks vs block elements vs composition objects.
- App surfaces and how blocks are placed within them.
- Limits, such as up to 50 blocks in a message and 100 in modals or Home tabs.
- A reference section that splits into:
Blocks– each page documents one block type (fields, examples, compatibility with surfaces).Block elements– interactive controls likebutton,static_select,multi_select,datepicker, etc.Composition objects– supporting types likeplain_text,mrkdwn, option objects, and confirmation dialogs.
- A short description of what the block/element does.
- A JSON schema-style description of fields (required/optional, types, constraints like max length).
- One or more example payloads that can be copy-pasted into Block Kit Builder.
- Some indication of surface compatibility (e.g., “not supported in modals”).
section block that uses a mrkdwn text object and has a button accessory). This matches the composable nature of Block Kit but can be cognitively expensive.
Documentation strengths:
- Very consistent reference format across all blocks and elements.
- Solid example coverage that maps almost 1:1 with what you see in Block Kit Builder.
- Good explanation of how blocks map onto different surfaces.
Interaction Payloads
Interaction payloads are the JSON structures Slack sends to your app when a user interacts with an app feature: clicking a Block Kitbutton, submitting a modal (view_submission), invoking a shortcut, etc.
The docs frame interaction payloads as:
- A conceptual overview explaining:
- Slack needs a Request URL to send these payloads to.
- The payload’s structure depends on the feature that triggered it.
- Every payload includes a
typefield that identifies the interaction source.
- A set of sub-pages, each for a payload family:
block_actions– when users interact with Block Kit interactive elements.shortcuts– for global and message shortcuts.view_submissionandview_closed– for modal interactions.- Other specialized payloads, like block suggestions.
- Top-level metadata:
type,team,user,api_app_id,token, etc. - Context objects:
channel,message,containerfor the surface or message.viewfor modal interactions.
- Interaction-specific fields:
trigger_id(used to open modals or start workflows).- Arrays like
actionsfor block actions, each withaction_id,block_id,value, and sometimesselected_optionorselected_user.
- Example payloads showing realistic structures for each interaction type.
view vs a message). For things like shortcuts, the docs clearly show when type will be shortcut vs message_action.
Documentation strengths:
- Clear mapping from interaction type → payload shape.
- Detailed field tables that mark required vs optional fields.
- Good example JSON that matches real payloads apps will see.
Objects
The Objects reference describes the core data models Slack uses throughout the platform—things like users, conversations, messages, files, and related types. Docs-wise, this area does a few things:- It acts as a canonical schema catalog for key objects:
user– identity, profile (names, email, avatar URLs), locale, flags (is_bot,is_admin, etc.), and enterprise-related fields (enterprise_user,team_id).channel/conversation– IDs, names, types (public/private/channel/IM), membership, archived status.file,usergroup, and other supporting objects.
- It clarifies how these objects appear across APIs:
- For example,
users.inforeturns auserobject, events may include a similar but sometimes slightly different shape, and the docs help you normalize expectations.
- For example,
- A short description (e.g., “A user object contains information about a Slack workspace user”).
- A field-by-field breakdown indicating:
- Data type (string, boolean, object, array).
- Whether it’s always present or conditional.
- When fields are only available in certain contexts (e.g., Enterprise Grid).
- Sometimes, notes or links about ID semantics and migrations (for example, how user IDs behave in enterprise orgs).
Documentation strengths:
- Serves as the source of truth for Slack’s core object shapes.
- Helps developers understand which fields they can rely on vs which are optional or context-specific.
- Good cross-linking to methods that return or manipulate these objects, like
users.info.
Key Findings
Overall Strengths
- Excellent information architecture with consistent navigational patterns
- Strong technical depth across schemas and examples
- Clear terminology and Slack-specific vocabulary definitions
Overall Weaknesses
- High complexity without enough onboarding aids
- Few real-world lifecycle examples connecting user actions to API responses
- Legacy objects not visually separated enough from active models
Recommendations
For Slack’s Documentation Team
For Developers
- Pay close attention to nested structure definitions in Block Kit and Payload schemas.
- Use Block Kit Builder for design iteration.
- Cross-reference objects with methods to understand data flow.

