---
title: "Retry a dead delivery"
method: POST
path: "/webhooks/{id}/deliveries/{deliveryId}/retry"
tags: ["Webhooks"]
---

# Retry a dead delivery

`POST /webhooks/{id}/deliveries/{deliveryId}/retry`

## Request

- Base URL: `https://gtmswag.com/api/v1`
- URL: `https://gtmswag.com/api/v1/webhooks/{id}/deliveries/{deliveryId}/retry`
- Auth: HTTP bearer

Starts a new cycle of 8 attempts for a `dead` delivery. Pass `source=playbook` for a playbook event. Owner or admin keys may call it. Send no body; with a workspace key no Content-Type is needed.

## Path parameters

- `id` string, required
- `deliveryId` string, required

## Query parameters

- `source` 'gift' | 'playbook'

## Response `200`

Success: `{"data": OkResult}`.

- OkResultResponse: The success body: `{"data": OkResult}`.
  - `data` OkResult, required: The change was made.
    - `ok` true, required

## Other responses

- `400`: Bad request: `VALIDATION_ERROR`. Each example says when.
- `401`: Not authenticated: `AUTH_REQUIRED`. no credentials, or an OAuth token on a route that only takes workspace keys; the key is malformed, unknown or revoked.
- `403`: Forbidden: `TEAM_MANAGER_REQUIRED`. Each example says when.
- `409`: Conflict: `INVALID_REQUEST`. Each example says when.
- `413`: Request too large: `INVALID_REQUEST`. the body exceeds 1 MiB.
- `415`: Unsupported media type: `INVALID_REQUEST`. a write with a body that is not `Content-Type: application/json` (a key request with no body needs no Content-Type).
- `429`: Too many requests: `RATE_LIMIT`. more than 240 requests in the current minute for this workspace (REST and MCP share the limit); wait `retryAfterMs`.
- `default`: Any other refusal or failure, such as 403 CSRF (a cross-origin `Origin` header), 403 HTTPS_REQUIRED or 500 INTERNAL_ERROR, with what to do next.

---

[API](https://skmtc.dev/gtmswag/apis/gtm-swag-api.md) · [All operations](https://skmtc.dev/gtmswag/apis/gtm-swag-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gtmswag/apis/gtm-swag-api/revisions/9ff86fa99afe?raw)
