Slack Web API

The Slack Web API is an HTTP-based interface that provides access to all of Slack's platform features. It consists of over 200 methods organized by functional area (chat, conversations, users, files, admin, and more) that apps call over HTTPS with JSON payloads and receive JSON responses. The Web API is the primary way apps interact with Slack programmatically, covering everything from posting messages and managing channels to uploading files, managing users, and administering workspaces.

OpenAPI Specification

slack-web-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Slack Web API
  description: >-
    The Slack Web API is an HTTP-based interface that provides access to all of
    Slack's platform features. It consists of over 200 methods organized by
    functional area (chat, conversations, users, files, admin, and more) that
    apps call over HTTPS with JSON payloads and receive JSON responses. All
    methods require authentication via OAuth tokens (bot or user) with granular
    permission scopes, and are subject to tiered rate limits. The Web API
    supports cursor-based pagination for large result sets and provides
    consistent error handling across all endpoints.
  version: 1.0.0
  termsOfService: https://slack.com/terms-of-service/api
  contact:
    name: Slack Developer Support
    url: https://docs.slack.dev
  license:
    name: Slack API Terms of Service
    url: https://slack.com/terms-of-service/api
servers:
- url: https://slack.com/api
  description: Slack Web API production server
security:
- bearerAuth: []
tags:
- name: Auth
  description: Authentication and authorization methods
- name: Bookmarks
  description: Manage channel bookmarks
- name: Chat
  description: Post, update, delete, and manage messages
- name: Conversations
  description: Manage channels, DMs, and group conversations
- name: Dnd
  description: Do Not Disturb management
- name: Emoji
  description: List custom emoji
- name: Files
  description: Upload, share, and manage files
- name: Pins
  description: Pin and unpin messages in conversations
- name: Reactions
  description: Add and manage emoji reactions
- name: Reminders
  description: Create and manage reminders
- name: Search
  description: Search messages and files
- name: Team
  description: Access workspace information
- name: Usergroups
  description: Manage user groups
- name: Users
  description: Find and manage user information
- name: Views
  description: Open, update, and manage modals and App Home tabs
paths:
  /auth.test:
    post:
      tags:
      - Auth
      summary: Slack Test Authentication
      description: >-
        Checks authentication and tells the caller who they are. Returns
        information about the token holder including user ID, team ID, and
        team name.
      operationId: authTest
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/auth.test
      responses:
        '200':
          description: Successful authentication test
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  url:
                    type: string
                    description: URL of the team
                  team:
                    type: string
                    description: Team name
                  user:
                    type: string
                    description: User name
                  team_id:
                    type: string
                    description: Team ID
                  user_id:
                    type: string
                    description: User ID
                  bot_id:
                    type: string
                    description: Bot user ID (if token belongs to a bot)
                  is_enterprise_install:
                    type: boolean
                    description: Whether this is an enterprise install
                required:
                - ok
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /auth.revoke:
    post:
      tags:
      - Auth
      summary: Slack Revoke an Access Token
      description: Revokes the access token that is used to call this method.
      operationId: authRevoke
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/auth.revoke
      parameters:
      - name: test
        in: query
        description: Setting this parameter to true triggers a testing mode.
        schema:
          type: boolean
      responses:
        '200':
          description: Token revoked
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  revoked:
                    type: boolean
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.postMessage:
    post:
      tags:
      - Chat
      summary: Slack Send a Message to a Channel
      description: >-
        Sends a message to a channel, DM, or group conversation. Supports
        plain text, Block Kit layouts, attachments, threading, and message
        metadata. Requires the chat:write scope, or chat:write.public to
        post to channels the bot is not a member of.
      operationId: chatPostMessage
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.postMessage
      parameters:
      - name: token
        in: header
        description: 'Authentication token. Requires scope: chat:write'
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              properties:
                channel:
                  type: string
                  description: >-
                    Channel, private group, or IM channel to send message to.
                    Can be an encoded ID or a name.
                text:
                  type: string
                  description: >-
                    The text of the message. Required when not providing
                    blocks or attachments. Used as fallback text for
                    notifications.
                blocks:
                  type: array
                  description: >-
                    A JSON array of Block Kit layout blocks.
                  items:
                    type: object
                attachments:
                  type: array
                  description: A JSON array of structured attachments.
                  items:
                    type: object
                thread_ts:
                  type: string
                  description: >-
                    Provide another message's ts value to make this message
                    a reply in a thread.
                reply_broadcast:
                  type: boolean
                  description: >-
                    Used in conjunction with thread_ts to indicate whether
                    reply should be made visible in the channel.
                metadata:
                  type: object
                  description: JSON object with event_type and event_payload fields.
                  properties:
                    event_type:
                      type: string
                    event_payload:
                      type: object
                mrkdwn:
                  type: boolean
                  description: Enable or disable Slack markup parsing. Defaults to true.
                parse:
                  type: string
                  description: Change how messages are treated.
                  enum:
                  - full
                  - none
                link_names:
                  type: boolean
                  description: Find and link user groups.
                unfurl_links:
                  type: boolean
                  description: Enable unfurling of primarily text-based content.
                unfurl_media:
                  type: boolean
                  description: Enable unfurling of media content.
                icon_emoji:
                  type: string
                  description: Emoji to use as the icon for this message.
                icon_url:
                  type: string
                  format: uri
                  description: URL to an image to use as the icon for this message.
                username:
                  type: string
                  description: Set your bot's user name.
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - channel
              properties:
                channel:
                  type: string
                text:
                  type: string
                blocks:
                  type: string
                  description: JSON-encoded array of Block Kit blocks.
                attachments:
                  type: string
                  description: JSON-encoded array of attachments.
                thread_ts:
                  type: string
                reply_broadcast:
                  type: boolean
                mrkdwn:
                  type: boolean
                parse:
                  type: string
                link_names:
                  type: boolean
                unfurl_links:
                  type: boolean
                unfurl_media:
                  type: boolean
      responses:
        '200':
          description: Message posted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    type: string
                    description: Channel ID where the message was posted
                  ts:
                    type: string
                    description: Timestamp of the posted message
                  message:
                    $ref: '#/components/schemas/Message'
                required:
                - ok
                - channel
                - ts
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.update:
    post:
      tags:
      - Chat
      summary: Slack Update an Existing Message
      description: >-
        Updates a message in a channel. Both the text and blocks can be
        updated. Requires the chat:write scope.
      operationId: chatUpdate
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.update
      parameters:
      - name: token
        in: header
        description: 'Authentication token. Requires scope: chat:write'
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              - ts
              properties:
                channel:
                  type: string
                  description: Channel containing the message to be updated.
                ts:
                  type: string
                  description: Timestamp of the message to be updated.
                text:
                  type: string
                  description: New text for the message.
                blocks:
                  type: array
                  description: A JSON array of Block Kit layout blocks.
                  items:
                    type: object
                attachments:
                  type: array
                  description: A JSON array of structured attachments.
                  items:
                    type: object
                metadata:
                  type: object
                  description: JSON object with event_type and event_payload fields.
                parse:
                  type: string
                  enum:
                  - full
                  - none
                link_names:
                  type: boolean
                reply_broadcast:
                  type: boolean
      responses:
        '200':
          description: Message updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    type: string
                  ts:
                    type: string
                  text:
                    type: string
                  message:
                    $ref: '#/components/schemas/Message'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.delete:
    post:
      tags:
      - Chat
      summary: Slack Delete a Message
      description: >-
        Deletes a message from a channel. Requires the chat:write scope.
        The message must have been posted by the calling user or bot.
      operationId: chatDelete
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.delete
      parameters:
      - name: token
        in: header
        description: 'Authentication token. Requires scope: chat:write'
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              - ts
              properties:
                channel:
                  type: string
                  description: Channel containing the message to be deleted.
                ts:
                  type: string
                  description: Timestamp of the message to be deleted.
      responses:
        '200':
          description: Message deleted successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    type: string
                  ts:
                    type: string
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.postEphemeral:
    post:
      tags:
      - Chat
      summary: Slack Send an Ephemeral Message
      description: >-
        Sends an ephemeral message to a user in a channel, visible only
        to that user. Requires the chat:write scope.
      operationId: chatPostEphemeral
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.postEphemeral
      parameters:
      - name: token
        in: header
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              - user
              properties:
                channel:
                  type: string
                  description: Channel to send the ephemeral message to.
                user:
                  type: string
                  description: User ID of the user who will see the message.
                text:
                  type: string
                  description: The text of the message.
                blocks:
                  type: array
                  items:
                    type: object
                attachments:
                  type: array
                  items:
                    type: object
                thread_ts:
                  type: string
                  description: >-
                    Provide a thread timestamp to send the ephemeral message
                    within a thread.
      responses:
        '200':
          description: Ephemeral message sent
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  message_ts:
                    type: string
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.scheduleMessage:
    post:
      tags:
      - Chat
      summary: Slack Schedule a Message for Later
      description: >-
        Schedules a message to be sent to a channel at a specified time.
        Requires the chat:write scope.
      operationId: chatScheduleMessage
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.scheduleMessage
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              - post_at
              properties:
                channel:
                  type: string
                  description: Channel to send the scheduled message to.
                post_at:
                  type: integer
                  description: Unix timestamp for when the message should be sent.
                text:
                  type: string
                  description: The text of the message.
                blocks:
                  type: array
                  items:
                    type: object
                attachments:
                  type: array
                  items:
                    type: object
                thread_ts:
                  type: string
                metadata:
                  type: object
                unfurl_links:
                  type: boolean
                unfurl_media:
                  type: boolean
      responses:
        '200':
          description: Message scheduled
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    type: string
                  scheduled_message_id:
                    type: string
                  post_at:
                    type: integer
                  message:
                    $ref: '#/components/schemas/Message'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.getPermalink:
    get:
      tags:
      - Chat
      summary: Slack Get a Permalink for a Message
      description: Retrieve a permalink URL for a specific extant message.
      operationId: chatGetPermalink
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.getPermalink
      parameters:
      - name: channel
        in: query
        required: true
        schema:
          type: string
        description: The ID of the conversation or channel containing the message.
      - name: message_ts
        in: query
        required: true
        schema:
          type: string
        description: A message's ts value.
      responses:
        '200':
          description: Permalink retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    type: string
                  permalink:
                    type: string
                    format: uri
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /chat.unfurl:
    post:
      tags:
      - Chat
      summary: Slack Provide Custom Unfurl Behavior
      description: >-
        Provide custom unfurl behavior for URLs posted in messages. Requires
        links:write scope.
      operationId: chatUnfurl
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/chat.unfurl
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              - ts
              - unfurls
              properties:
                channel:
                  type: string
                ts:
                  type: string
                unfurls:
                  type: object
                  description: >-
                    A map of URL to unfurl content in Block Kit or attachment
                    format.
                user_auth_message:
                  type: string
                user_auth_required:
                  type: boolean
                user_auth_url:
                  type: string
                  format: uri
      responses:
        '200':
          description: Unfurl provided
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.list:
    get:
      tags:
      - Conversations
      summary: Slack List All Channels
      description: >-
        Lists all channels in a Slack team. Returns a paginated collection
        of conversation objects. Supports filtering by conversation type.
      operationId: conversationsList
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.list
      parameters:
      - name: cursor
        in: query
        description: >-
          Paginate through collections by setting the cursor parameter
          to a next_cursor attribute returned by a previous request.
        schema:
          type: string
      - name: exclude_archived
        in: query
        description: Set to true to exclude archived channels from the list.
        schema:
          type: boolean
          default: false
      - name: limit
        in: query
        description: >-
          The maximum number of items to return. Fewer than the requested
          number of items may be returned, even if the end of the list
          hasn't been reached. Maximum of 1000.
        schema:
          type: integer
          default: 100
          maximum: 1000
      - name: team_id
        in: query
        description: >-
          Required for org-wide app tokens. A single team ID to list
          channels in.
        schema:
          type: string
      - name: types
        in: query
        description: >-
          Mix and match channel types by providing a comma-separated
          list. Options: public_channel, private_channel, mpim, im.
        schema:
          type: string
          default: public_channel
      responses:
        '200':
          description: Channel list retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channels:
                    type: array
                    items:
                      $ref: '#/components/schemas/Channel'
                  response_metadata:
                    $ref: '#/components/schemas/ResponseMetadata'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.info:
    get:
      tags:
      - Conversations
      summary: Slack Get Information About a Channel
      description: >-
        Retrieve information about a conversation including its purpose,
        topic, member count, and other metadata.
      operationId: conversationsInfo
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.info
      parameters:
      - name: channel
        in: query
        required: true
        description: The conversation ID to get info on.
        schema:
          type: string
      - name: include_locale
        in: query
        description: Set to true to receive the locale for this conversation.
        schema:
          type: boolean
          default: false
      - name: include_num_members
        in: query
        description: Set to true to include the member count.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Channel information retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    $ref: '#/components/schemas/Channel'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.history:
    get:
      tags:
      - Conversations
      summary: Slack Fetch Message History
      description: >-
        Fetches a conversation's history of messages and events. Returns
        messages in reverse chronological order.
      operationId: conversationsHistory
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.history
      parameters:
      - name: channel
        in: query
        required: true
        description: Conversation ID to fetch history for.
        schema:
          type: string
      - name: cursor
        in: query
        description: >-
          Paginate through collections by setting the cursor parameter
          to a next_cursor attribute returned by a previous request.
        schema:
          type: string
      - name: inclusive
        in: query
        description: >-
          Include messages with oldest or latest timestamps in results.
        schema:
          type: boolean
          default: false
      - name: latest
        in: query
        description: >-
          Only messages before this Unix timestamp will be included.
          Default is the current time.
        schema:
          type: string
      - name: limit
        in: query
        description: >-
          The maximum number of items to return. Default 100, max 999.
        schema:
          type: integer
          default: 100
          maximum: 999
      - name: oldest
        in: query
        description: >-
          Only messages after this Unix timestamp will be included.
          Default is 0.
        schema:
          type: string
          default: '0'
      - name: include_all_metadata
        in: query
        description: Return all metadata associated with messages.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Conversation history retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  messages:
                    type: array
                    items:
                      $ref: '#/components/schemas/Message'
                  has_more:
                    type: boolean
                  pin_count:
                    type: integer
                  response_metadata:
                    $ref: '#/components/schemas/ResponseMetadata'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.create:
    post:
      tags:
      - Conversations
      summary: Slack Create a Channel
      description: >-
        Initiates a public or private channel-based conversation.
        Requires conversations:write scope.
      operationId: conversationsCreate
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  description: Name of the public or private channel to create.
                is_private:
                  type: boolean
                  description: Create a private channel instead of a public one.
                  default: false
                team_id:
                  type: string
                  description: >-
                    Required for org-wide apps. The workspace in which to
                    create the channel.
      responses:
        '200':
          description: Channel created
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    $ref: '#/components/schemas/Channel'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.join:
    post:
      tags:
      - Conversations
      summary: Slack Join an Existing Conversation
      description: >-
        Joins an existing conversation. Requires channels:write scope.
      operationId: conversationsJoin
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.join
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              properties:
                channel:
                  type: string
                  description: ID of conversation to join.
      responses:
        '200':
          description: Joined channel
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    $ref: '#/components/schemas/Channel'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.invite:
    post:
      tags:
      - Conversations
      summary: Slack Invite Users to a Channel
      description: Invites users to a channel. Requires channels:write scope.
      operationId: conversationsInvite
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.invite
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              - users
              properties:
                channel:
                  type: string
                  description: The ID of the public or private channel to invite users to.
                users:
                  type: string
                  description: >-
                    A comma-separated list of user IDs to invite to the
                    channel. Up to 1000.
      responses:
        '200':
          description: Users invited
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  channel:
                    $ref: '#/components/schemas/Channel'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.leave:
    post:
      tags:
      - Conversations
      summary: Slack Leave a Conversation
      description: Leaves a conversation. Requires channels:write scope.
      operationId: conversationsLeave
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.leave
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              properties:
                channel:
                  type: string
                  description: Conversation to leave.
      responses:
        '200':
          description: Left channel
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /conversations.archive:
    post:
      tags:
      - Conversations
      summary: Slack Archive a Channel
      description: Archives a conversation. Requires channels:write scope.
      operationId: conversationsArchive
      externalDocs:
        description: API method documentation
        url: https://docs.slack.dev/reference/methods/conversations.archive
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - channel
              properties:
                channel:
                  type: string
                  description: ID of conversation to

# --- truncated at 32 KB (101 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-web-api-openapi.yml