The Slack platform is composed of several APIs that let you build apps of all shapes and sizes. Generally, these APIs work together but there’s also a bit of overlap that can sometimes be confusing. This section will help you find the right API for your project.
With the Events API, you pick the events you’re interested in receiving and Slack will send them to an endpoint you specify via HTTP.
If you don't wish to expose a public, static HTTP endpoint to communicate with Slack, Socket Mode can help.
If the Events API is how Slack pings your app, the Web API is how your app pongs back to Slack. Often, this will be because you want to take some action on a Slack workspace, such as composing a message or creating a new channel. Other times, it’s because you want to request something directly, such as a list of all the people in a workspace.
The Conversations API is a subset of the Web API, meaning it’s a set of functions you use to call Slack directly. These functions deal specifically with all of the various channel-like objects that can exist in a Slack workspace, specifically public and private channels, shared channels, external shared channels, DMs, and multiparty DMs.
For the most part, these channel-like objects all behave the same (you can list the users in them, for example), however each conversation will have unique attributes, such as how private it is or whether it's shared across workspaces.
Socket Mode allows you to use the Events API and interactive features of the platform—without exposing a static HTTP endpoint to receive payloads. Instead, you use the WebSocket Protocol and generate a URL at runtime.
The Real Time Messaging (RTM) API is another, outmoded way of connecting your application to Slack. For most applications that can't use a static HTTP endpoint, Socket Mode is preferred over RTM.