Webhooks
List Organization Webhooks
/api/orgs/{orgName}/hooksReturns all webhooks configured at the organization level. Each webhook in the response includes its name, destination URL, format (generic JSON, Slack, or Microsoft Teams), active status, and subscribed event filters. Organization-level webhooks can fire on stack lifecycle events, deployment events, drift detection events, and policy violation events.
Request Parameters
orgNamestring path requiredThe organization name
Responses
Create Organization Webhook
/api/orgs/{orgName}/hooksCreates a new webhook for an organization to notify external services when events occur. Webhooks can be configured to fire on stack events (created, deleted, update succeeded/failed), deployment events (queued, started, succeeded, failed), drift detection events, and policy violation events (mandatory, advisory).
The format field accepts: raw (default), slack, ms_teams, or pulumi_deployments.
The filters field accepts a list of event types to subscribe to. See the webhook event filtering documentation for available filters.
The optional secret field sets the HMAC key for signature verification via the Pulumi-Webhook-Signature header. See the webhook headers documentation for details.
Request Parameters
orgNamestring path requiredThe organization name
Request Body
organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.stackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Responses
hasSecretboolean requiredHasSecret is true if the webhook has a secret. This is used to determine whether to show that there is a secret in the UI.organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.secretCiphertextstring requiredSecretCiphertext is the ciphertext value of the webhook’s secret. It’s used to check whether the secret was changed by the PSPstackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Get Organization Webhook
/api/orgs/{orgName}/hooks/{hookName}Returns the configuration of a specific organization-level webhook, including its name, destination URL, format (generic JSON, Slack, or Microsoft Teams), active status, event filter subscriptions, and whether a shared secret is configured for HMAC signature verification.
Request Parameters
orgNamestring path requiredThe organization namehookNamestring path requiredThe webhook name identifier
Responses
hasSecretboolean requiredHasSecret is true if the webhook has a secret. This is used to determine whether to show that there is a secret in the UI.organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.secretCiphertextstring requiredSecretCiphertext is the ciphertext value of the webhook’s secret. It’s used to check whether the secret was changed by the PSPstackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Update Organization Webhook
/api/orgs/{orgName}/hooks/{hookName}Updates an existing organization-level webhook’s configuration, including its destination URL, format, active status, event filter subscriptions, and shared secret. The ‘pulumi_deployments’ format can only be used on stack or environment webhooks, not organization-level ones.
Request Parameters
orgNamestring path requiredThe organization namehookNamestring path requiredThe webhook name identifier
Request Body
organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.stackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Responses
hasSecretboolean requiredHasSecret is true if the webhook has a secret. This is used to determine whether to show that there is a secret in the UI.organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.secretCiphertextstring requiredSecretCiphertext is the ciphertext value of the webhook’s secret. It’s used to check whether the secret was changed by the PSPstackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Delete Organization Webhook
/api/orgs/{orgName}/hooks/{hookName}Permanently deletes an organization-level webhook. The webhook will no longer receive event notifications for stack updates, deployments, drift detection, or policy violations. This action cannot be undone.
Request Parameters
orgNamestring path requiredThe organization namehookNamestring path requiredThe webhook name identifier
Responses
Get Organization Webhook Deliveries
/api/orgs/{orgName}/hooks/{hookName}/deliveriesReturns the recent delivery history for a specific webhook, including the HTTP status code, response time, request payload, and delivery timestamp for each attempt. This allows monitoring webhook health and diagnosing delivery failures. Each delivery includes a unique Pulumi-Webhook-ID.
Request Parameters
orgNamestring path requiredThe organization namehookNamestring path requiredThe webhook name identifier
Responses
Redeliver Organization Webhook Event
/api/orgs/{orgName}/hooks/{hookName}/deliveries/{event}/redeliverTriggers the Pulumi Service to redeliver a specific event to a webhook. For example, to resend an event that the hook failed to process the first time.
Request Parameters
orgNamestring path requiredThe organization namehookNamestring path requiredThe webhook name identifiereventstring path requiredThe event identifier to redeliver
Responses
idstring requiredThe unique identifier of the delivery.kindstring requiredThe kind of webhook event.payloadstring requiredThe JSON payload that was sent.timestampinteger requiredThe time the delivery was sent, as a Unix epoch timestamp.durationinteger requiredThe duration of the delivery request in milliseconds.requestUrlstring requiredThe URL the webhook was delivered to.requestHeadersstring requiredThe HTTP headers sent with the request.responseCodeinteger requiredThe HTTP response status code.responseHeadersstring requiredThe HTTP response headers.responseBodystring requiredThe HTTP response body.
Ping Organization Webhook
/api/orgs/{orgName}/hooks/{hookName}/pingSends a test ping to an organization webhook to validate that it is working. This function bypasses the message queue machinery and issues the request directly to the webhook.
Request Parameters
orgNamestring path requiredThe organization namehookNamestring path requiredThe webhook name identifier
Responses
idstring requiredThe unique identifier of the delivery.kindstring requiredThe kind of webhook event.payloadstring requiredThe JSON payload that was sent.timestampinteger requiredThe time the delivery was sent, as a Unix epoch timestamp.durationinteger requiredThe duration of the delivery request in milliseconds.requestUrlstring requiredThe URL the webhook was delivered to.requestHeadersstring requiredThe HTTP headers sent with the request.responseCodeinteger requiredThe HTTP response status code.responseHeadersstring requiredThe HTTP response headers.responseBodystring requiredThe HTTP response body.
List Stack Webhooks
/api/stacks/{orgName}/{projectName}/{stackName}/hooksReturns all webhooks configured for the specified stack. Each webhook in the response includes its name, display name, payload URL, format, filters, and active status.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack name
Responses
Create Stack Webhook
/api/stacks/{orgName}/{projectName}/{stackName}/hooksCreates a new webhook for the specified stack. The request body must include the webhook name, payload URL, and format.
The format field accepts: raw (default), slack, ms_teams, or pulumi_deployments.
The filters field accepts a list of event types to subscribe to. See the webhook event filtering documentation for available filters.
The optional secret field sets the HMAC key for signature verification. See the webhook headers documentation for details.
Returns 409 if a webhook with the same name already exists. Returns 400 if the organization or stack name in the request body does not match the URL path parameters.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack name
Request Body
organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.stackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Responses
hasSecretboolean requiredHasSecret is true if the webhook has a secret. This is used to determine whether to show that there is a secret in the UI.organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.secretCiphertextstring requiredSecretCiphertext is the ciphertext value of the webhook’s secret. It’s used to check whether the secret was changed by the PSPstackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Get Stack Webhook
/api/stacks/{orgName}/{projectName}/{stackName}/hooks/{hookName}Returns the details of a single webhook identified by its name, including its configuration, filters, groups, and active status. Returns 404 if the webhook does not exist.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack namehookNamestring path requiredThe webhook name
Responses
hasSecretboolean requiredHasSecret is true if the webhook has a secret. This is used to determine whether to show that there is a secret in the UI.organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.secretCiphertextstring requiredSecretCiphertext is the ciphertext value of the webhook’s secret. It’s used to check whether the secret was changed by the PSPstackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Update Stack Webhook
/api/stacks/{orgName}/{projectName}/{stackName}/hooks/{hookName}Updates an existing webhook’s configuration. Supports modifying the display name, payload URL, format, groups, filters, and active status. The ‘pulumi_deployments’ format can only be used on stack or environment webhooks. Returns 404 if the webhook does not exist.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack namehookNamestring path requiredThe webhook name
Request Body
organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.stackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Responses
hasSecretboolean requiredHasSecret is true if the webhook has a secret. This is used to determine whether to show that there is a secret in the UI.organizationNamestring requiredThe organization that owns this webhook.projectNamestring optionalThe project name. Set when the webhook is scoped to a specific stack.secretCiphertextstring requiredSecretCiphertext is the ciphertext value of the webhook’s secret. It’s used to check whether the secret was changed by the PSPstackNamestring optionalThe stack name. Set when the webhook is scoped to a specific stack.envNamestring optionalThe environment name. Set when the webhook is scoped to a specific environment.namestring requiredThe unique identifier name for the webhook within its scope.displayNamestring requiredThe human-readable display name shown in the UI.payloadUrlstring requiredThe URL to which webhook payloads are delivered.secretstring optionalSecret will be omitted when returned from the service.activeboolean requiredWhether the webhook is active and will receive deliveries.formatstring optionalThe format of the webhook payload (e.g., ‘raw’, ‘slack’, ‘ms_teams’).filtersarray[string] optionalSpecific event types this webhook subscribes to. If empty, all events are delivered.groupsarray[string] optionalEvent groups this webhook subscribes to (e.g., ‘stacks’, ‘deployments’).
Delete Stack Webhook
/api/stacks/{orgName}/{projectName}/{stackName}/hooks/{hookName}Deletes a webhook from the specified stack. Returns 204 with no content on success.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack namehookNamestring path requiredThe webhook name
Responses
Get Stack Webhook Deliveries
/api/stacks/{orgName}/{projectName}/{stackName}/hooks/{hookName}/deliveriesReturns the recent delivery history for a specific webhook. Each delivery includes the timestamp, HTTP status code, request and response details, and whether the delivery was successful.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack namehookNamestring path requiredThe webhook name
Responses
Redeliver Stack Webhook Event
/api/stacks/{orgName}/{projectName}/{stackName}/hooks/{hookName}/deliveries/{event}/redeliverTriggers the Pulumi Service to redeliver a specific event to a webhook. This is useful for resending an event that the webhook endpoint failed to process on the initial delivery attempt. Returns the delivery result with HTTP status and response details. Returns 404 if the webhook or event does not exist.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack namehookNamestring path requiredThe webhook nameeventstring path requiredThe webhook delivery event identifier to redeliver
Responses
idstring requiredThe unique identifier of the delivery.kindstring requiredThe kind of webhook event.payloadstring requiredThe JSON payload that was sent.timestampinteger requiredThe time the delivery was sent, as a Unix epoch timestamp.durationinteger requiredThe duration of the delivery request in milliseconds.requestUrlstring requiredThe URL the webhook was delivered to.requestHeadersstring requiredThe HTTP headers sent with the request.responseCodeinteger requiredThe HTTP response status code.responseHeadersstring requiredThe HTTP response headers.responseBodystring requiredThe HTTP response body.
Ping Stack Webhook
/api/stacks/{orgName}/{projectName}/{stackName}/hooks/{hookName}/pingIssues a test ping event to the specified webhook to verify it is properly configured and reachable. Unlike normal webhook deliveries, this bypasses the message queue and sends the request directly to the webhook endpoint. The response includes the delivery result with HTTP status and response details. Returns 404 if the webhook does not exist.
Request Parameters
orgNamestring path requiredThe organization nameprojectNamestring path requiredThe project namestackNamestring path requiredThe stack namehookNamestring path requiredThe webhook name
Responses
idstring requiredThe unique identifier of the delivery.kindstring requiredThe kind of webhook event.payloadstring requiredThe JSON payload that was sent.timestampinteger requiredThe time the delivery was sent, as a Unix epoch timestamp.durationinteger requiredThe duration of the delivery request in milliseconds.requestUrlstring requiredThe URL the webhook was delivered to.requestHeadersstring requiredThe HTTP headers sent with the request.responseCodeinteger requiredThe HTTP response status code.responseHeadersstring requiredThe HTTP response headers.responseBodystring requiredThe HTTP response body.
Thank you for your feedback!
If you have a question about how to use Pulumi, reach out in Community Slack.
Open an issue on GitHub to report a problem or suggest an improvement.