---
id: config-ping-webhook
title: "Ping webhook"
description: "This endpoint pings a webhook that was defined to trigger events to an external IT system. Use it to check that the payload URL answers."
sidebar_label: "Ping webhook"
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"}>Ping webhook</h1>

<MethodEndpoint method={"post"} path={"/v2/config/webhook/{webhookId}/ping"}></MethodEndpoint>



This endpoint pings a webhook that was defined to trigger events to an external IT system. Use it to check that the payload URL answers.

The service sends a POST with an empty body to the payload URL. A ping carries no `X-IGrant-Signature` header, so the receiver cannot check its authenticity. The service does not record a ping as a webhook delivery.

The service answers with `200` for a reachable payload URL and for an unreachable one. Read the `status` field to tell the two apart.


## 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={{"in":"path","name":"webhookId","required":true,"schema":{"type":"string"},"style":"simple"}}></ParamsItem></ul></div></details><details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Optional. Unique identifier of the sandbox organisation to use for this request. When you send this header, the service runs the operation in the context of the named sandbox organisation, that is, against the wallet of that sandbox organisation and not against the main wallet of the organisation. Leave the header out to use the main wallet.\n\nThe service reads this header only when you authenticate with a bearer access token. When you authenticate with an API key, the service takes the sandbox organisation from the API key and ignores this header. To run an API-key call in a sandbox organisation, bind the key to the sandbox organisation with `PUT /v2/config/admin/apikey/{apiKeyId}/sandbox-org` instead.\n\n`X-SubwalletId` is the deprecated name of this header. The service continues to accept it, but `X-SandboxOrgId` wins if you send both headers.\n\nThe sandbox organisation must exist, must belong to your organisation and must be deployed. An unknown identifier, an identifier of a sandbox organisation that is not deployed, and an identifier that belongs to a different organisation all make the call fail with HTTP 400.","in":"header","name":"X-SandboxOrgId","required":false,"schema":{"type":"string"},"example":"6889e1a4c5b2f30001a3d710"}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service completed the ping. The `status` field tells you if the payload URL answered.

</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={"responseStatusCode"} required={true} schemaName={"int32"} qualifierMessage={undefined} schema={{"type":"integer","format":"int32","description":"HTTP status code that the payload URL sent. The value is `0` when the service could not reach the payload URL.","example":200}}></SchemaItem><SchemaItem collapsible={false} name={"responseStatusStr"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"HTTP status text that the payload URL sent. The value is an empty string when the service could not reach the payload URL.","example":"200 OK"}}></SchemaItem><SchemaItem collapsible={false} name={"executionStartTimestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"UTC time when the ping started."}}></SchemaItem><SchemaItem collapsible={false} name={"executionEndTimestamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"UTC time when the ping ended."}}></SchemaItem><SchemaItem collapsible={false} name={"status"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`completed`, `failed`]"} schema={{"type":"string","description":"Result of the ping. `completed` means the payload URL answered. `failed` means the service could not reach it.","enum":["completed","failed"],"example":"completed"}}></SchemaItem><SchemaItem collapsible={false} name={"statusDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Reason for a failure. The value is an empty string when `status` is `completed`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"responseStatusCode\": 200,\n  \"responseStatusStr\": \"200 OK\",\n  \"executionStartTimestamp\": \"string\",\n  \"executionEndTimestamp\": \"string\",\n  \"status\": \"completed\",\n  \"statusDescription\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

Resource not found

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal server error

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      