---
title: "Set a project's dead-letter email setting — on/off and the throttle window (owner/admin)"
method: PUT
path: "/v1/projects/{project_id}/dlq-notifications"
tags: ["projects"]
---

# Set a project's dead-letter email setting — on/off and the throttle window (owner/admin)

`PUT /v1/projects/{project_id}/dlq-notifications`

## Request

- Base URL: `https://api.wavehouse.cloud`
- URL: `https://api.wavehouse.cloud/v1/projects/{project_id}/dlq-notifications`
- Auth: one of:
  - API key in cookie `whc_session`
  - HTTP bearer
  - API key in header `X-API-Key`

An email to the organization's owners and admins when this project's dead-letter queue gains records — rows the engine accepted at ingest and then could not insert, which no query returns and no ingest response reported. ON by default. At most one email per project per window: the first new record sends immediately, anything parked inside the window arrives with it as one digest when the window ends. A count that goes DOWN (the engine restarted) re-baselines silently and notifies nobody.

## Path parameters

- `project_id` string, required

## Request body

- DLQNotifySettingsView
  - `enabled` boolean, required: send the email when this project dead-letters records
  - `window_seconds` integer, required: at most one email per project per this many seconds; 0 on a write means the default (3600)

## Response `200`

OK

- DLQNotifySettingsOutput
  - `enabled` boolean, required: send the email when this project dead-letters records
  - `last_sent_at` string, date-time, nullable, required: when the last email went out; null if none has
  - `next_send_at` string, date-time, nullable, required: when a held digest may go out; null when the next record sends immediately
  - `pending_records` integer, required: newly dead-lettered records held for the next digest
  - `window_seconds` integer, required: at most one email per project per this many seconds; 0 on a write means the default (3600)

## Other responses

- `429`: Rate limited, per client IP, API key or org; a client IP is also refused on every route for a while after repeated authentication failures. A limited operation carries RateLimit-Policy and RateLimit on every response; wait Retry-After seconds before retrying.
- `default`: Error

---

[API](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api.md) · [All operations](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wavehouse/apis/wavehouse-cloud-api/revisions/adea029bf505?raw)
