Create integration

View as MarkdownOpen in Claude
Creates the Slack or Discord destination of a notification configuration. When the configuration already has a destination of that type, its URL is replaced instead (the destination keeps its id). Never sends a test message and never switches the channel on - that is `slack_channel`/`discord_channel` on "Update configuration". Answers **201** with the resource either way, with no `Location` header: a destination has no read route of its own, it is read through "Read configuration" (`include=integrations`). **Body** (JSON): - `type` (string, required): `slack` or `discord`. - `url` (string, required, max 2048): a complete `https://hooks.slack.com/services/...` URL for `slack`, or a complete `https://discord.com/api/webhooks/...` (or `discordapp.com`) URL for `discord`. An empty, missing or masked URL answers 422. To change the URL of an existing destination use "Update integration"; to remove it use "Delete integration". The complete URL is returned on ordinary reads too (a conscious exception); the MCP answers only a mask. Requires a full-access token (read-only tokens answer 403), permission to edit notification configurations and the organization's plan channel for that type; without them the configuration answers **404**. Body validation runs before authorization: a foreign configuration with an invalid body answers 422, with a valid body 404. Never run this request against production with a real webhook URL - use a fictional one.

Authentication

AuthorizationBearer

Personal access token created in the Modular DS dashboard; read-only tokens can only call GET endpoints.

Path parameters

alert_idstringRequired

Request

This endpoint expects an object.
typestringOptional
urlstringOptional

Response

201 - Integration created (or replaced)

dataobjectOptional
jsonapiobjectOptional

Errors

422
Unprocessable Entity Error