---
updatedAt: 2026-06-03T14:36:34.000Z
agentTools:
  projectIndex: https://developer.personio.de/llms.txt
---

# Redeliver events for a webhook.

Redelivers events selected by the request parameters. Only events from the last 30 days can be redelivered.
At least one of the `occurred_at.lte` or `occurred_at.gte` fields must be provided in the request body.
A maximum of 100 events will be redelivered per request.
Limited to 500 events every hour.
This endpoint requires the `personio:webhooks:write` scope.


# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "Webhooks Management API",
    "version": "2.0.0",
    "description": "Endpoints to manage webhooks."
  },
  "servers": [
    {
      "url": "https://api.personio.de"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/v2/webhooks/{id}/redelivery": {
      "post": {
        "summary": "Redeliver events for a webhook.",
        "description": "Redelivers events selected by the request parameters. Only events from the last 30 days can be redelivered.\nAt least one of the `occurred_at.lte` or `occurred_at.gte` fields must be provided in the request body.\nA maximum of 100 events will be redelivered per request.\nLimited to 500 events every hour.\nThis endpoint requires the `personio:webhooks:write` scope.\n",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the webhook whose events are to be redelivered.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-path-examples": {
          "200 redelivery valid request": {
            "value": "/v2/webhooks/2e4324b0-1b0e-11ee-a7f7-e37ffd9b3a44/redelivery"
          },
          "200 redelivery empty response": {
            "value": "/v2/webhooks/2e4324b0-1b0e-11ee-a7f7-e37ffd9b3a44/redelivery"
          },
          "400 redelivery missing occurred_at range": {
            "value": "/v2/webhooks/2e4324b0-1b0e-11ee-a7f7-e37ffd9b3a44/redelivery"
          }
        },
        "requestBody": {
          "$ref": "#/components/requestBodies/TriggerRedeliveryRequest"
        },
        "responses": {
          "202": {
            "$ref": "#/components/responses/TriggerRedeliveryResponse"
          },
          "400": {
            "$ref": "#/components/responses/TriggerRedeliveryBadRequest"
          },
          "403": {
            "$ref": "#/components/responses/WebhookAccessForbiddenErrorResponse"
          },
          "404": {
            "$ref": "#/components/responses/WebhookNotFoundErrorResponse"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "TriggerRedeliveryRequest": {
        "description": "Redelivery request schema",
        "type": "object",
        "anyOf": [
          {
            "type": "object",
            "description": "Redelivery request schema with 'occurred_at.gte' as the required field.",
            "properties": {
              "occurred_at.gte": {
                "type": "string",
                "format": "date-time",
                "description": "The end date for selecting events by occurred date. Only events occurred on or after this date will be included.",
                "example": "2023-01-01T12:00:00.000Z"
              },
              "occurred_at.lte": {
                "type": "string",
                "format": "date-time",
                "description": "The start date for selecting events by occurred date. Only events occurred on or after this date will be included.",
                "example": "2023-01-01T13:00:00.000Z"
              },
              "event_name": {
                "type": "string",
                "description": "Enables selecting by event name. Refer to the [event catalog](https://developer.personio.de/v2.0/reference/webhooks#event-catalog) for a list of valid event names.",
                "example": "person.updated"
              }
            },
            "required": [
              "occurred_at.gte"
            ]
          },
          {
            "type": "object",
            "description": "Redelivery request schema with 'occurred_at.lte' as the required field.",
            "properties": {
              "occurred_at.gte": {
                "type": "string",
                "format": "date-time",
                "description": "The end date for selecting events by occurred date. Only events occurred on or after this date will be included.",
                "example": "2023-01-01T12:00:00.000Z"
              },
              "occurred_at.lte": {
                "type": "string",
                "format": "date-time",
                "description": "The start date for selecting events by occurred date. Only events occurred on or after this date will be included.",
                "example": "2023-01-01T13:00:00.000Z"
              },
              "event_name": {
                "type": "string",
                "description": "Enables selecting by event name. Refer to the [event catalog](https://developer.personio.de/v2.0/reference/webhooks#event-catalog) for a list of valid event names.",
                "example": "person.updated"
              }
            },
            "required": [
              "occurred_at.lte"
            ]
          }
        ]
      }
    },
    "requestBodies": {
      "TriggerRedeliveryRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TriggerRedeliveryRequest"
            },
            "examples": {
              "200 redelivery valid request": {
                "$ref": "#/components/examples/ValidRedeliveryRequestPayload"
              },
              "200 redelivery empty response": {
                "$ref": "#/components/examples/ValidRedeliveryRequestPayload"
              },
              "400 redelivery missing occurred_at range": {
                "$ref": "#/components/examples/InvalidOccurredAtRangeRedeliveryRequestPayload"
              }
            }
          }
        }
      }
    },
    "responses": {
      "WebhookNotFoundErrorResponse": {
        "description": "The webhook could not be found.",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/responses/WebhookBadFilterErrorResponse/content/application~1problem+json/schema"
            },
            "examples": {
              "Resource Not Found": {
                "$ref": "#/components/examples/WebhookNotFoundErrorResponse"
              }
            }
          }
        }
      },
      "WebhookBadFilterErrorResponse": {
        "description": "The filters specified with the request are faulty.",
        "content": {
          "application/problem+json": {
            "schema": {
              "type": "object",
              "description": "This object represents an error response.",
              "properties": {
                "personio_trace_id": {
                  "type": "string",
                  "example": "aswo3f-a202lfso-312123sld-1230ddd",
                  "description": "A unique ID that was created for this error."
                },
                "timestamp": {
                  "type": "string",
                  "format": "date-time",
                  "example": "2021-05-28T11:17:30.000Z",
                  "description": "The timestamp of when the error occurred."
                },
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "example": "Not found",
                        "description": "The title of the error."
                      },
                      "detail": {
                        "type": "string",
                        "example": "The requested resource was not found.",
                        "description": "A short description about the error."
                      },
                      "type": {
                        "type": "string",
                        "format": "uri",
                        "example": "https://developer.personio.de/reference/errors#common.requested_resource_not_found",
                        "description": "A link to the developer hub where more information can be found for the encountered error."
                      },
                      "_meta": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            },
            "examples": {
              "Invalid status filter": {
                "$ref": "#/components/examples/InvalidStatusFilterResponse"
              }
            }
          }
        }
      },
      "WebhookAccessForbiddenErrorResponse": {
        "description": "Access to the webhook is forbidden.",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/responses/WebhookBadFilterErrorResponse/content/application~1problem+json/schema"
            },
            "examples": {
              "Access Forbidden": {
                "$ref": "#/components/examples/WebhookAccessForbiddenErrorResponse"
              }
            }
          }
        }
      },
      "TriggerRedeliveryResponse": {
        "description": "Redelivery request accepted.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "redelivery_id": {
                  "type": "string",
                  "description": "The ID of the redelivery operation."
                },
                "earliest_occurred_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The occurred date of the earliest event to be redelivered in UTC."
                },
                "latest_occurred_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The occurred date of the latest event to be redelivered in UTC."
                },
                "total": {
                  "type": "integer",
                  "description": "The total number of events to be redelivered."
                }
              },
              "required": [
                "redelivery_id",
                "total"
              ]
            },
            "examples": {
              "200 redelivery valid request": {
                "$ref": "#/components/examples/TriggerRedeliveryResponse"
              },
              "200 redelivery empty response": {
                "$ref": "#/components/examples/TriggerRedeliveryEmptyResponse"
              }
            }
          }
        }
      },
      "TriggerRedeliveryBadRequest": {
        "description": "The redelivery request cannot be processed due to faulty input payload.",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/responses/WebhookBadFilterErrorResponse/content/application~1problem+json/schema"
            },
            "examples": {
              "400 redelivery missing occurred_at range": {
                "$ref": "#/components/examples/TriggerRedeliveryMissingRangeResponse"
              }
            }
          }
        }
      }
    },
    "examples": {
      "WebhookAccessForbiddenErrorResponse": {
        "value": {
          "personio_trace_id": "aswo3f-a202lfso-312123sld-1230ddd",
          "timestamp": "2021-05-28T11:17:30Z",
          "errors": [
            {
              "title": "Access denied",
              "detail": "Access denied to perform webhook operations"
            }
          ]
        }
      },
      "WebhookNotFoundErrorResponse": {
        "value": {
          "personio_trace_id": "aswo3f-a202lfso-312123sld-1230ddd",
          "timestamp": "2021-05-28T11:17:30Z",
          "errors": [
            {
              "title": "Webhook not found",
              "detail": "No webhook found matching the given id"
            }
          ]
        }
      },
      "ValidRedeliveryRequestPayload": {
        "value": {
          "occurred_at.gte": "2024-05-23T00:00:00Z",
          "occurred_at.lte": "2024-05-30T13:59:59Z",
          "event_name": "person.updated"
        }
      },
      "InvalidOccurredAtRangeRedeliveryRequestPayload": {
        "value": {
          "event_name": "person.updated"
        }
      },
      "TriggerRedeliveryResponse": {
        "value": {
          "redelivery_id": "2da86fee-6e01-488b-9071-e6ad49a33c80",
          "earliest_occurred_at": "2024-05-28T11:17:30Z",
          "latest_occurred_at": "2024-05-29T12:00:25Z",
          "total": 12
        }
      },
      "TriggerRedeliveryEmptyResponse": {
        "value": {
          "redelivery_id": "2da86fee-6e01-488b-9071-e6ad49a33c80",
          "earliest_occurred_at": null,
          "latest_occurred_at": null,
          "total": 0
        }
      },
      "TriggerRedeliveryMissingRangeResponse": {
        "value": {
          "personio_trace_id": "aswo3f-a202lfso-312123sld-1230ddd",
          "timestamp": "2021-05-28T11:17:30Z",
          "errors": [
            {
              "title": "Missing required fields: occurred_at.gte and occurred_at.lte",
              "detail": "At least one of 'occurred_at.gte' or 'occurred_at.lte' must be provided."
            }
          ]
        }
      }
    }
  }
}
```