---
title: "Resume an auto-paused webhook endpoint"
method: POST
path: "/api/v1/webhook-endpoints/{endpointId}/resume"
tags: ["Webhook endpoints"]
---

# Resume an auto-paused webhook endpoint

`POST /api/v1/webhook-endpoints/{endpointId}/resume`

## Request

- Base URL: `https://app.dodomain.io`
- URL: `https://app.dodomain.io/api/v1/webhook-endpoints/{endpointId}/resume`
- Auth: HTTP bearer

DoDomain pauses an endpoint automatically once it has had NO successful delivery for 7 days AND at least 5 dead-lettered deliveries in that span (measured from the later of its last successful delivery and its creation, or its last resume). While paused (`pausedAt` set), new events are still recorded as deliveries but marked skipped and never sent, and redriving any of its deliveries is refused. This call resumes it: `pausedAt` back to null and the 7-day clock restarted. A verb sub-path, like rotate-secret, because resuming is an action rather than a property you set. Idempotent — an endpoint that is not paused comes back unchanged. It does NOT resend the skipped deliveries: redrive them from the dashboard, each with its original delivery id. A PATCH that changes the URL resumes the endpoint too. An unknown id and another app's id both answer 404.

## Path parameters

- `endpointId` string, required

## Headers

- `DoDomain-Team` string

## Response `200`

Success.

- WebhookEndpointSummary
  - `appId` string, required
  - `createdAt` string, date-time, required
  - `id` string, required
  - `pausedAt` string, date-time, nullable, required
  - `url` string, required

## Other responses

- `401`: `401 unauthorized` — No `Authorization: Bearer` header, or the credential is malformed, unknown, or (for OAuth tokens) fails verification.
- `403`: `403 forbidden` — The OAuth access token was not granted the scope this operation requires. `details.code` is `SCOPE_MISSING` and `details.requiredScope` names the scope. Secret keys (`dd_sk_`) carry no scopes and never see this for a missing scope. The one-click start routes also answer it for a session created without one-click (a Free-plan team's session): no `details`, and the end user falls back to the manual records.
- `404`: `404 not_found` — The addressed resource does not exist, or the caller does not own it — the two collapse to one status on purpose, so an id cannot be enumerated by a caller who does not own it.
- `429`: `429 rate_limited` — Rate limited. `Retry-After` (seconds) is set and `details.retryAfterSeconds` repeats it. Branch on `details.reason`: `request_rate` means the caller is calling too fast (`details.limit` carries the cap), `recently_checked` means this one connection was DNS-checked inside its cooldown.
- `500`: `500 internal` — An unhandled server-side failure. Reported to our error tracker; safe to retry.

---

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