# Webhooks

Webhook endpoints for receiving events

## Get Multi-Webhook Configuration

> Retrieves all configured additional webhooks including their names, URLs, and custom headers.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"multi_webhook.GetAllMultiWebhooksResp":{"description":"Response containing the multi-webhook enabled state and all configured destinations","properties":{"destinations":{"items":{"$ref":"#/components/schemas/config.Destination"},"type":"array","uniqueItems":false},"enabled":{"type":"boolean"}},"type":"object"},"config.Destination":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"},"utils.SuccessResp":{"properties":{"message":{"type":"string"}},"type":"object"}}},"paths":{"/multi_webhook":{"get":{"description":"Retrieves all configured additional webhooks including their names, URLs, and custom headers.","operationId":"get-multi-webhook-config","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/multi_webhook.GetAllMultiWebhooksResp"}}},"description":"Multi-webhook configuration retrieved successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Multi webhook is disabled - use POST to enable it first"}},"summary":"Get Multi-Webhook Configuration","tags":["Webhooks"]}}}}
```

## Enable/Disable Multi-Webhook

> Enable or disable the multi-webhook feature. When enabling, you can optionally provide initial destinations. If already enabled, use PUT to add more destinations. Destination names must be unique.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"multi_webhook.PostMultiWebhooksReq":{"description":"Request payload to enable or disable the multi-webhook feature. Set enabled=true with optional destinations to enable, or enabled=false to disable.","properties":{"destinations":{"items":{"$ref":"#/components/schemas/config.Destination"},"type":"array","uniqueItems":false},"enabled":{"type":"boolean"}},"required":["enabled"],"type":"object"},"config.Destination":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"type":"object"},"utils.SuccessResp":{"properties":{"message":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/multi_webhook":{"post":{"description":"Enable or disable the multi-webhook feature. When enabling, you can optionally provide initial destinations. If already enabled, use PUT to add more destinations. Destination names must be unique.","operationId":"enable-multi-webhook","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/multi_webhook.PostMultiWebhooksReq","summary":"requestBody","description":"Multi-webhook configuration"}]}}},"description":"Multi-webhook configuration","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Operation started successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request - already enabled, duplicate destination names, or max destinations exceeded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Enable/Disable Multi-Webhook","tags":["Webhooks"]}}}}
```

## Append Webhook Destinations

> Append additional destinations to the existing multi-webhook configuration. Multi-webhook must be enabled first via POST. Destination names must be unique and not conflict with existing ones. Total destinations cannot exceed the configured maximum.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"multi_webhook.PutMultiWebhooksReq":{"description":"Request payload to append additional webhook destinations. Destination names must not conflict with existing ones.","properties":{"destinations":{"items":{"$ref":"#/components/schemas/config.Destination"},"type":"array","uniqueItems":false}},"required":["destinations"],"type":"object"},"config.Destination":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"type":"object"},"utils.SuccessResp":{"properties":{"message":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/multi_webhook":{"put":{"description":"Append additional destinations to the existing multi-webhook configuration. Multi-webhook must be enabled first via POST. Destination names must be unique and not conflict with existing ones. Total destinations cannot exceed the configured maximum.","operationId":"add-multi-webhook-destinations","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/multi_webhook.PutMultiWebhooksReq","summary":"requestBody","description":"Destinations to append"}]}}},"description":"Destinations to append","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Operation started successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request - duplicate destination name or max destinations exceeded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Multi webhook is disabled - use POST to enable it first"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Append Webhook Destinations","tags":["Webhooks"]}}}}
```

## Update a Webhook Destination

> Updates specific properties (url, headers) of an existing webhook destination identified by name. Multi-webhook must be enabled first via POST.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"config.Destination":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"url":{"type":"string"}},"required":["name","url"],"type":"object"},"utils.SuccessResp":{"properties":{"message":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"},"multi_webhook.GetAllMultiWebhooksResp":{"description":"Response containing the multi-webhook enabled state and all configured destinations","properties":{"destinations":{"items":{"$ref":"#/components/schemas/config.Destination"},"type":"array","uniqueItems":false},"enabled":{"type":"boolean"}},"type":"object"}}},"paths":{"/multi_webhook":{"patch":{"description":"Updates specific properties (url, headers) of an existing webhook destination identified by name. Multi-webhook must be enabled first via POST.","operationId":"update-multi-webhook-destination","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/config.Destination","summary":"requestBody","description":"Destination with name (to identify) and updated url/headers"}]}}},"description":"Destination with name (to identify) and updated url/headers","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Operation started successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request - invalid payload"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Destination not found - no destination with the given name"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/multi_webhook.GetAllMultiWebhooksResp"}}},"description":"Multi webhook is disabled"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Update a Webhook Destination","tags":["Webhooks"]}}}}
```

## Delete a Webhook Destination

> Deletes a specific webhook destination from the multi-webhook configuration by its name. Multi-webhook must be enabled first via POST.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"utils.SuccessResp":{"properties":{"message":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/multi_webhook/{dest_name}":{"delete":{"description":"Deletes a specific webhook destination from the multi-webhook configuration by its name. Multi-webhook must be enabled first via POST.","operationId":"delete-multi-webhook-destination","parameters":[{"description":"Name of the webhook destination to delete","in":"path","name":"dest_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Destination deleted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request - dest_name is required"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Destination not found - no destination with the given name"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.SuccessResp"}}},"description":"Multi webhook is disabled - use POST to enable it first"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Delete a Webhook Destination","tags":["Webhooks"]}}}}
```

## Get Customer Webhook Configuration

> Retrieve customer webhook configuration. More info on webhook configuration can be found in our documentation: <https://docs.360dialog.com/docs/waba-messaging/webhook#get-webhook-url>.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"webhook_management.WebhookConfigSchema":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"url":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/v1/configs/webhook":{"get":{"description":"Retrieve customer webhook configuration. More info on webhook configuration can be found in our documentation: https://docs.360dialog.com/docs/waba-messaging/webhook#get-webhook-url.","operationId":"get-customer-webhook-config","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_management.WebhookConfigSchema"}}},"description":"Webhook configuration retrieved successfully"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Get Customer Webhook Configuration","tags":["Webhooks"]}}}}
```

## Set Customer Webhook Configuration

> Configure customer webhook settings. More info on webhook configuration can be found in our documentation: <https://docs.360dialog.com/docs/waba-messaging/webhook#via-api>.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"webhook_management.WebhookConfigSchema":{"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"url":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/v1/configs/webhook":{"post":{"description":"Configure customer webhook settings. More info on webhook configuration can be found in our documentation: https://docs.360dialog.com/docs/waba-messaging/webhook#via-api.","operationId":"set-customer-webhook-config","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/webhook_management.WebhookConfigSchema","summary":"requestBody","description":"Webhook configuration payload"}]}}},"description":"Webhook configuration payload","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_management.WebhookConfigSchema"}}},"description":"Webhook configuration updated successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Set Customer Webhook Configuration","tags":["Webhooks"]}}}}
```

## Get WABA Webhook Configuration

> Retrieve the current WABA-level webhook configuration including the URL, custom headers, WABA ID, and phone numbers associated with this WABA.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"waba_webhook.WABAWebhookConfigSchema":{"description":"Current WABA-level webhook configuration including the URL, headers, WABA ID, and associated phone numbers","properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"numbers_on_this_waba":{"items":{"type":"string"},"type":"array","uniqueItems":false},"url":{"type":"string"},"waba_id":{"type":"integer"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/waba_webhook":{"get":{"description":"Retrieve the current WABA-level webhook configuration including the URL, custom headers, WABA ID, and phone numbers associated with this WABA.","operationId":"get-waba-webhook-config","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/waba_webhook.WABAWebhookConfigSchema"}}},"description":"WABA webhook configuration retrieved successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Get WABA Webhook Configuration","tags":["Webhooks"]}}}}
```

## Set WABA Webhook Configuration

> Configure WABA-level webhook URL and optional headers. When override\_all is false, configures the webhook only for Cloud API numbers missing a phone-number-level webhook. When true, the webhook applies across all Cloud API numbers within the WABA. The webhook will be set within 15-20 seconds.

```json
{"openapi":"3.1.0","info":{"title":"Messaging API","version":"1.41.0"},"tags":[{"name":"Webhooks","description":"Webhook endpoints for receiving events"}],"servers":[{"description":"Production server","url":"https://waba-v2.360dialog.io"}],"security":[{"D360-API-KEY":[]}],"components":{"securitySchemes":{"D360-API-KEY":{"description":"API Key for Messaging API authentication. Send your API key in the D360-API-KEY header.","in":"header","name":"D360-API-KEY","type":"apiKey"}},"schemas":{"waba_webhook.SetWABAWebhookRequest":{"description":"Request payload to configure a WABA-level webhook URL. When override_all is false, it only applies to Cloud API numbers without a phone-number-level webhook. When true, it overrides all numbers.","properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"override_all":{"type":"boolean"},"url":{"type":"string"}},"required":["url"],"type":"object"},"waba_webhook.SetWABAWebhookResponse":{"description":"Response after initiating WABA webhook configuration. The webhook will be set within 15-20 seconds.","properties":{"message":{"type":"string"}},"type":"object"},"utils.ErrorResp":{"properties":{"error":{"type":"string"}},"type":"object"}}},"paths":{"/waba_webhook":{"post":{"description":"Configure WABA-level webhook URL and optional headers. When override_all is false, configures the webhook only for Cloud API numbers missing a phone-number-level webhook. When true, the webhook applies across all Cloud API numbers within the WABA. The webhook will be set within 15-20 seconds.","operationId":"set-waba-webhook-config","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/waba_webhook.SetWABAWebhookRequest","summary":"requestBody","description":"WABA webhook configuration payload"}]}}},"description":"WABA webhook configuration payload","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/waba_webhook.SetWABAWebhookResponse"}}},"description":"Webhook configuration initiated successfully. Change will be applied within 15-20 seconds."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Bad request - Invalid URL or malformed request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Unauthorized - Invalid or missing D360-API-KEY"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/utils.ErrorResp"}}},"description":"Internal server error"}},"summary":"Set WABA Webhook Configuration","tags":["Webhooks"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.360dialog.com/docs/messaging-api/api-reference/webhooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
