Skip to content
Median
Esc
↑↓navigate↵open⌘Jpreview

Set up the Discord side

Where tickets are cut, who is pinged, where conversations are mirrored, and the two switches. Names in, resolved against the live server. staffRole is the one field where null is an answer: send null to stop pinging anybody, and leave it out to keep whoever is pinged now.

PATCH/integrations/discord
Authorization
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/json
ticketChannelstring
staffRolestring | null
A role name, or null to stop pinging anybody.
mirrorChannelstring
mirrorEnabledboolean
enabledboolean
Responses
200Whatever was named, as it resolved.
ticketChannelstring | null
staffRolestring | null
mirrorChannelstring | null
400The request is malformed, and the message names the field.
errorobject
Show properties
codestring
messagestring
401The bearer token is missing, revoked, or expired.
errorobject
Show properties
codestring
messagestring
404Not one of yours, or not there at all.
errorobject
Show properties
codestring
messagestring
429Too many requests. Wait the seconds in `Retry-After`. Limits depend on the plan. See [rate limits](/api/errors-and-limits#rate-limits).
errorobject
Show properties
codestring
messagestring
Request
curl -X PATCH "https://api.median.sh/v1/integrations/discord" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "ticketChannel": "string",
  "staffRole": "string",
  "mirrorChannel": "string",
  "mirrorEnabled": true,
  "enabled": true
}'
Response
{
  "ticketChannel": "string",
  "staffRole": "string",
  "mirrorChannel": "string"
}