Point the Slack mirror
Where conversations are mirrored, and whether the mirror runs. The channel goes in by name, since only the workspace can turn one into an id: this asks the bot for the list first, and a name that matches nothing comes back saying what the workspace actually has. Connecting the workspace itself is a consent screen, so it stays in the dashboard.
PATCH
/integrations/slackAuthorization
AuthorizationBearer token · headerrequired`MEDIAN_KEY` from Settings under API, or an MCP OAuth access token. A key acts as the organization; a token acts as the person who approved it.
Request body
application/jsonchannelstringA channel name, with or without the #.
enabledbooleanResponses
200The channel it now points at, when one was named.
channelstring | null400The request is malformed, and the message names the field.
errorobjectShow propertiesHide properties
codestringmessagestring401The bearer token is missing, revoked, or expired.
errorobjectShow propertiesHide properties
codestringmessagestring404Not one of yours, or not there at all.
errorobjectShow propertiesHide properties
codestringmessagestring429Too many requests. Wait the seconds in `Retry-After`. Limits depend on the plan. See [rate limits](/api/errors-and-limits#rate-limits).
errorobjectShow propertiesHide properties
codestringmessagestringRequest
curl -X PATCH "https://api.median.sh/v1/integrations/slack" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "string",
"enabled": true
}'const response = await fetch("https://api.median.sh/v1/integrations/slack", {
method: "PATCH",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"channel": "string",
"enabled": true
})
});Response
{
"channel": "string"
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}