> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shouldertap.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack events

> The endpoint that receives Slack Events API callbacks so ShoulderTap can capture expert replies.

<code>POST /api/v1/slack/events</code>

This endpoint receives callbacks from the [Slack Events API](https://api.slack.com/apis/events-api). It's how ShoulderTap captures an expert's reply to an ask when running with `--transport slack`. You don't call it yourself — Slack does — but you configure your Slack app's Event Subscriptions request URL to point at it:

```
https://<your-host>/api/v1/slack/events
```

## Authentication

Unlike every other route, this endpoint is **not** guarded by the bearer token. Slack signs its own requests, and ShoulderTap verifies the signature using the Slack signing secret (`slack.signing_secret_env`). See [Connect Slack](/run/slack).

## Behavior

<ResponseField name="Slack transport configured">
  ShoulderTap verifies the Slack signature and processes the event. Direct-message replies from experts are captured and turned into proposals; URL-verification challenges are answered. Messages from bots, message edits, and non-DM messages are ignored.
</ResponseField>

<ResponseField name="Slack transport not configured">
  Returns `501 Not Implemented`. Running with `--transport console`, there is no Slack integration to handle the event.
</ResponseField>

<Note>
  This endpoint exists to serve Slack. In normal operation you configure it once in your Slack app and never touch it again — expert replies flow through it automatically.
</Note>
