---
title: "Update alert or pipeline destination"
method: PUT
path: "/api/{org_id}/alerts/destinations/{destination_name}"
tags: ["Alerts"]
---

# Update alert or pipeline destination

`PUT /api/{org_id}/alerts/destinations/{destination_name}`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/alerts/destinations/{destination_name}`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/alerts/destinations/:destination_name/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates an existing destination configuration. For alert destinations, allows modification of settings such as webhook URLs, authentication credentials, notification channels, and other delivery parameters. For pipeline destinations, allows updating external system endpoints, output formats, and metadata. Use the 'module' query parameter to specify destination type: 'alert' (default) or 'pipeline'.

## Path parameters

- `org_id` string, required
- `destination_name` string, required

## Query parameters

- `module` string

## Request body

- object: Alert destination configuration for sending notifications when alerts trigger. IMPORTANT: The `template` field is REQUIRED to create an alert destination. Without a template, the destination becomes a pipeline destination and cannot be used with alerts. # Example - Creating an HTTP alert destination ```json { "name": "my_alert_webhook", "url": "https://example.com/webhook", "method": "post", "type": "http", "template": "Default", "skip_tls_verify": false } ``` # Example - Creating an Email alert destination ```json { "name": "my_email_dest", "type": "email", "emails": ["alerts@example.com", "team@example.com"], "template": "Default" } ```
  - `auto_investigate` 'off' | 'critical'
  - `buttons` boolean, nullable: Acknowledge, Mute and Investigate on each message; default true.
  - `channel_id` string, nullable
  - `channel_name` string, nullable
  - `installation_id` string, nullable
  - `mention` union: Who a repeat or a level-up mentions; `Default` is `@here` for critical and nobody otherwise.
    - 'default'
    - 'here'
    - 'channel'
    - 'none'
    - object
      - `subteam` object, required
        - `handle` string, required
        - `subteam_id` string, required
  - `oncall_room_confirmed` boolean, nullable: Required true when an on-call team pages into this channel through a Slack webhook.
  - `previous_webhook` object, nullable: The webhook a switch replaced, kept so it can be switched back; never sent to.
  - `refire_reuse_minutes` integer, nullable: 0 to 240; default 30.
  - `shared_channel_confirmed` boolean, nullable: Required true when the channel is shared with another company.
  - `aws_region` string, nullable: AWS region for SNS destinations. Required when `type` is `sns`.
  - `destination_type_name` string, nullable: Specific destination type identifier (e.g., "openobserve", "splunk", "elasticsearch").
  - `emails` string[]: Email recipients for Email destinations. Required when `type` is `email`.
  - `headers` object, nullable: Optional HTTP headers for webhook requests; values read back blank without PUT.
  - `metadata` object: Optional key-value metadata; without PUT, values outside the known plain keys read blank.
  - `method` 'post' | 'put' | 'get'
  - `name` string: Unique name for this destination. Must be unique within the organization.
  - `output_format` union
    - 'json'
    - 'ndjson'
    - 'nestedevent'
    - object
      - `esbulk` object, required
        - `index` string, required
    - object
      - `stringseparated` object, required
        - `separator` string, required
  - `skip_tls_verify` boolean: Whether to skip TLS certificate verification for HTTP destinations.
  - `sns_topic_arn` string, nullable: SNS topic ARN for SNS destinations. Required when `type` is `sns`.
  - `template` string, nullable: REQUIRED for alert destinations. Name of the template to use for formatting alert messages. Use "Default" for the built-in default template. Without a template, the destination becomes a pipeline destination and cannot be used with alerts.
  - `type` 'http' | 'email' | 'sns' | 'slack_app'
  - `url` string: Webhook URL, required for `http`; without PUT, its origin, or empty for a keyed host.
  - `uses` DestinationUseResponse[], nullable: Every consumer referencing this destination; present only when `include_usage=true`.
    - `consumer` 'alert' | 'composite_alert' | 'pipeline' | 'synthetic_check' | 'oncall_policy' | 'oncall_team_channel' | 'workflow' | 'anomaly_detection' | 'incident_integration' | 'downtime', required: Wire form of `DestinationConsumer`; no wildcard arm, so a new consumer must compile here too.
    - `folder_id` string, nullable
    - `id` string, required
    - `name` string, required

## Response `200`

Success

- HttpResponse: HTTP response code 200 is success code 400 is error code 404 is not found code 500 is internal server error code 503 is service unavailable code >= 1000 is custom error code message is the message or error message
  - `code` integer, required
  - `error_detail` string, nullable
  - `hint` string, nullable: One-line guidance on how to fix the error (agent self-correction, D4).
  - `id` string, nullable
  - `message` string, required
  - `name` string, nullable
  - `suggestions` string[], nullable: Closest valid alternatives for a mistyped field/function name.
  - `trace_id` string, nullable
  - `warnings` string[], nullable: Problems with a request that succeeded anyway. Distinct from `hint`, which explains a failure: these accompany a 200, and the caller is entitled to have meant it.

## Other responses

- `400`: Error

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
