Slack Events API front door
POST
/slack/app/events
const url = 'https://example.com/api/slack/app/events';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"type":"example","challenge":"example","team_id":"example","event":{}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/slack/app/events \ --header 'Content-Type: application/json' \ --data '{ "type": "example", "challenge": "example", "team_id": "example", "event": {} }'Verifies Slack’s v0 request signature over the raw body. Handles the url_verification handshake and the tokens_revoked / app_uninstalled events; every other event is acknowledged and ignored.
Request Body required
Section titled “Request Body required ” Media type application/json
object
type
string
challenge
string
team_id
string
event
object
key
additional properties
any
Responses
Section titled “ Responses ”Acknowledged
Media type application/json
object
key
additional properties
any
Invalid request
Media type application/json
object
error
required
Human-readable error message
string
code
Stable machine-readable error code for client branching
string
fieldErrors
First validation message per field path
object
key
additional properties
string
issues
Structured validation issues (Zod)
Array<object>
object
path
required
string
message
required
string
retryAfter
Seconds until rate limit resets (429 responses)
number
Not authenticated
Media type application/json
object
error
required
Human-readable error message
string
code
Stable machine-readable error code for client branching
string
fieldErrors
First validation message per field path
object
key
additional properties
string
issues
Structured validation issues (Zod)
Array<object>
object
path
required
string
message
required
string
retryAfter
Seconds until rate limit resets (429 responses)
number
reconnect
True if re-linking GitHub may fix the issue
boolean