---
title: "Slack interactivity callback (Approve/Reject buttons)"
method: POST
path: "/integrations/slack/actions"
---

# Slack interactivity callback (Approve/Reject buttons)

`POST /integrations/slack/actions`

## Request

- Base URL: `https://api.klanexai.com`
- URL: `https://api.klanexai.com/integrations/slack/actions`
- Auth: none required

Called by Slack, not by API clients — there is no API-key auth. Trust comes from Slack's v0 request signature (X-Slack-Signature over "v0:<X-Slack-Request-Timestamp>:<body>", 5-minute replay window) verified against the tenant's sealed signing secret. Drives the same approve/reject flow as the API and records "via Slack by @username" in the audit trail.

## Headers

- `X-Slack-Request-Timestamp` string, required
- `X-Slack-Signature` string, required

## Response `200`

Action processed (or acknowledged as not-for-us).

## Other responses

- `400`: Malformed callback.
- `401`: Signature verification failed.

---

[API](https://skmtc.dev/klanexai/apis/klanex-api.md) · [All operations](https://skmtc.dev/klanexai/apis/klanex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/klanexai/apis/klanex-api/revisions/daf36597612f?raw)
