---
id: config-redeliver-webhook
title: "Redeliver webhook delivery"
description: "Sends a delivery of a webhook again, for example after you fixed the receiver. Get the `deliveryId` from [List webhook deliveries](/docs/openid4vc-api/config-list-all-recent-webhook-deliveries)."
sidebar_label: "Redeliver webhook delivery"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/openid4vc-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>Redeliver webhook delivery</h1>

<MethodEndpoint method={"post"} path={"/v4/config/platform/webhooks/{webhookId}/delivery/{deliveryId}/redeliver"}></MethodEndpoint>



Sends a delivery of a webhook again, for example after you fixed the receiver. Get the `deliveryId` from [List webhook deliveries](/docs/openid4vc-api/config-list-all-recent-webhook-deliveries).

- **An event of the organisation wallet** (an `ows.*` type): the service queues a new delivery of the stored body to the same webhook, with a new delivery id, the same event id and the normal retries. The new delivery does not wait for the other events of the same subject, and they do not wait for it. It shows in the delivery list with the status `pending` until its first attempt.
- **A consent management or data marketplace event**: the service sends the stored body again, once, and records the attempt as a new delivery.

The answer is `200` with no body as soon as the service accepted the request; it does not wait for the answer of the payload URL. Read the result in the delivery list.


## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"The `id` of the webhook, from [Create webhook](/docs/openid4vc-api/config-create-webhook) or [List all webhooks](/docs/openid4vc-api/config-list-webhooks).","example":"68a1f2c3d4e5f6a7b8c9d0e1","in":"path","name":"webhookId","required":true,"schema":{"type":"string"},"style":"simple"}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"The `id` of the delivery to send again, from [List webhook deliveries](/docs/openid4vc-api/config-list-all-recent-webhook-deliveries).","example":"68a1f2c3d4e5f6a7b8c9d0e2","in":"path","name":"deliveryId","required":true,"schema":{"type":"string"},"style":"simple"}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service accepted the request. No body.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div></div></TabItem><TabItem label={"400"} value={"400"}><div>

The webhook has no delivery with this id: a wrong id, or the service no longer keeps the delivery. The body has the older form `{"Code", "Message"}`.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Failed to get delivery details by ID:68a1f2c3d4e5f6a7b8c9d0e2 for webhook:68a1f2c3d4e5f6a7b8c9d0e1 for organisation: 6889e1a4c5b2f30001a3d700"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"Code\": 400,\n  \"Message\": \"Failed to get delivery details by ID:68a1f2c3d4e5f6a7b8c9d0e2 for webhook:68a1f2c3d4e5f6a7b8c9d0e1 for organisation: 6889e1a4c5b2f30001a3d700\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The `Authorization` header is missing, or the API key or token is not valid.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"403"} value={"403"}><div>

The API key or token does not allow this call. An API key without the scope of the operation gets the older body `{"Code", "Message"}`. An `X-SandboxOrgId` header that names another sandbox organisation than the one of the API key gets `{"errorCode", "errorDescription"}`. When a platform admin has turned off the feature of the operation for the organisation, the answer has `errorKey` `feature_disabled` and the member `feature` (the name of the feature).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><div><span className={"badge badge--info"}>anyOf</span><SchemaTabs><TabItem label={"MOD1"} value={"0-item-properties"}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></TabItem><TabItem label={"Older error body"} value={"1-item-properties"}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The HTTP status.","example":403}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What went wrong.","example":"Unauthorized access;User doesn't have enough permissions;"}}></SchemaItem></TabItem></SchemaTabs></div></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"Code\": 403,\n  \"Message\": \"Unauthorized access;User doesn't have enough permissions;\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

No webhook of the organisation (or of the sandbox organisation) has this id, or the webhook is deleted. The body has the older form `{"Code", "Message"}`.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":404}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Failed to get webhook:68a1f2c3d4e5f6a7b8c9d0e1 for organisation: 6889e1a4c5b2f30001a3d700"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"Code\": 404,\n  \"Message\": \"Failed to get webhook:68a1f2c3d4e5f6a7b8c9d0e1 for organisation: 6889e1a4c5b2f30001a3d700\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Unexpected server error, for example the service cannot queue the new delivery, or the stored body of a consent management event cannot be sent again. The body has the older form `{"Code", "Message"}`.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":500}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Failed to redeliver delivery:68a1f2c3d4e5f6a7b8c9d0e2 of webhook:68a1f2c3d4e5f6a7b8c9d0e1 for organisation: 6889e1a4c5b2f30001a3d700"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"Code\": 500,\n  \"Message\": \"Failed to redeliver delivery:68a1f2c3d4e5f6a7b8c9d0e2 of webhook:68a1f2c3d4e5f6a7b8c9d0e1 for organisation: 6889e1a4c5b2f30001a3d700\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      