Webhooks

Creates a new webhook for the authenticated team.

post/api/v2/webhooks

Request

  • Base URL
    / (relative, and the document was published on a file host, not at the API’s origin)
  • URL
    /api/v2/webhooks
  • Auth
    HTTP bearer

Request body

namestring required

Webhook name. Must be unique per service within the team.

service'slack' | 'incidentio' | 'generic' required

Webhook service type.

urlstring uri required

Webhook destination URL.

descriptionstring

Webhook description, shown in the UI.

titleEmojiboolean

Set to false to omit the state emoji prefix from notification titles sent through this webhook. Unset or true keeps the default prefix.

bodystring

Optional Handlebars request body template. Only for generic/incidentio; rejected for slack. Rejected with a 400 if it does not compile or calls a helper other than eq and the Handlebars built-ins.

headersobject

Write-only. Custom HTTP headers sent with the webhook request. Never returned on read. Only for generic/incidentio; rejected for slack. Each value is capped at 4096 characters.

queryParamsobject

Write-only. Query parameters appended to the webhook URL. Never returned on read. Only for generic/incidentio; rejected for slack. Each value is capped at 4096 characters.

Example request

{
  "name": "Production Alerts",
  "service": "slack",
  "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
  "description": "Sends critical alerts to the #incidents channel",
  "body": "{\"alert\": \"{{title}}\", \"severity\": \"{{level}}\"}",
  "headers": {
    "Authorization": "Bearer secret-token"
  }
}

Response

Successfully created webhook

Example response

{
  "data": {
    "id": "507f1f77bcf86cd799439011",
    "name": "Production Alerts",
    "service": "slack",
    "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
    "description": "Sends critical alerts to the #incidents channel",
    "updatedAt": "2025-06-15T10:30:00.000Z",
    "createdAt": "2025-01-01T00:00:00.000Z"
  }
}

Changes

    • info

      added the new optional request property

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      endpoint added