> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metriport.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Retry a Webhook request

> Resends one webhook request as a new delivery.

Retries one webhook request by sending it again to your configured URL.

The JSON in the HTTP 200 response is the same payload Metriport sends to your webhook URL
(`meta` plus the webhook body). `meta.messageId` is the **new** webhook request ID.
`meta.requestId` is unchanged from the original request when present.

<Note>
  Any presigned URLs in the payload are refreshed when the webhook is sent.
</Note>

## Path Params

<ParamField path="id" type="string" required>
  The webhook request ID to retry. Use either `id` or `payload.meta.messageId` from [List
  Webhook
  requests](/medical-api/api-reference/settings/list-webhook-requests); both contain the same value.
</ParamField>

## Response

HTTP status code 200. Body is the outbound webhook payload.

<ResponseExample>
  ```javascript Metriport SDK theme={null}
  import { MetriportMedicalApi } from "@metriport/api-sdk";

  const metriportClient = new MetriportMedicalApi("YOUR_API_KEY");

  const response = await metriportClient.retryWebhookRequest("WEBHOOK_REQUEST_ID");
  ```
</ResponseExample>

<ResponseField name="meta" type="object" required>
  Webhook metadata.

  <Expandable title="meta properties">
    <ResponseField name="messageId" type="string" required>
      ID of the **new** webhook request.
    </ResponseField>

    <ResponseField name="when" type="string" required>
      When the new webhook request was created, ISO 8601.
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Webhook type, for example `medical.document-download`.
    </ResponseField>

    <ResponseField name="requestId" type="string">
      Related request ID when this webhook was tied to
      another flow. Copied from the original request. Not
      regenerated on retry.
    </ResponseField>

    <ResponseField name="data" type="object">
      Customer metadata from the original webhook request, when
      present.
    </ResponseField>
  </Expandable>
</ResponseField>

Remaining fields are the webhook body for that type (same shape as the original webhook request).

Example response:

```json theme={null}
{
  "meta": {
    "messageId": "22222222-2222-2222-2222-222222222222",
    "when": "2026-09-22T12:00:00.000Z",
    "type": "medical.document-download",
    "requestId": "11111111-1111-1111-1111-111111111111"
  },
  "patients": [
    {
      "patientId": "eddeefa1-b54a-41d6-854f-0e91b7871d6a",
      "type": "document-download",
      "status": "completed"
    }
  ]
}
```

## Rate Limits

See [limits and throttling](/medical-api/more-info/limits#rate-limits)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.