> For the complete documentation index, see [llms.txt](https://docs.ospree.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ospree.io/developers/webhooks/openapi/webhook-requests.md).

# Webhook Requests

Inspect and retry webhook delivery attempts.

## List Webhook Requests

> List webhook requests for a business.

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Requests","description":"Inspect and retry webhook delivery attempts."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_Page_WebhookRequestResponse__":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/Page_WebhookRequestResponse_"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[Page[WebhookRequestResponse]]"},"Page_WebhookRequestResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookRequestResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0,"title":"Total"},"page":{"type":"integer","minimum":1,"title":"Page"},"size":{"type":"integer","minimum":1,"title":"Size"},"pages":{"type":"integer","minimum":0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WebhookRequestResponse]"},"WebhookRequestResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"request_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id"},"execution_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Execution Count"},"webhook_url":{"type":"string","title":"Webhook Url"},"event_type":{"type":"string","title":"Event Type"},"event_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Name"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"request_payload":{"anyOf":[{},{"type":"null"}],"title":"Request Payload"},"error_details":{"anyOf":[{},{"type":"null"}],"title":"Error Details"}},"type":"object","required":["id","webhook_url","event_type","timestamp"],"title":"WebhookRequestResponse","description":"The commercial delivery-attempt response — the status projection plus the payload.\n\nThe two additions are what makes this a PII-bearing read (see\n``docs/audit/adoption-roster.toml``): an integration token holder gets the\nbody Ospree delivered and the failure detail recorded against it."},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks/requests":{"get":{"tags":["Webhook Requests"],"summary":"List Webhook Requests","description":"List webhook requests for a business.","operationId":"list_webhook_requests_api_v2_webhooks_requests_get","parameters":[{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"}},{"name":"event_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Name"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Size"}}],"responses":{"200":{"description":"A page of delivery attempts, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_Page_WebhookRequestResponse__"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"422":{"description":"Unprocessable Entity - Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```

## Retry Webhook Request

> Retry a previously attempted webhook delivery.\
> \
> Re-sends the recorded payload to the endpoint's current URL and records a\
> fresh delivery attempt, which is what the response carries. The original\
> attempt is left in the log untouched.

```json
{"openapi":"3.1.0","info":{"title":"Ospree Webhooks API","version":"2.0.0"},"tags":[{"name":"Webhook Requests","description":"Inspect and retry webhook delivery attempts."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"ApiSuccessResponse_WebhookRequestResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/WebhookRequestResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[WebhookRequestResponse]"},"WebhookRequestResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"request_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id"},"execution_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Execution Count"},"webhook_url":{"type":"string","title":"Webhook Url"},"event_type":{"type":"string","title":"Event Type"},"event_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Name"},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"request_payload":{"anyOf":[{},{"type":"null"}],"title":"Request Payload"},"error_details":{"anyOf":[{},{"type":"null"}],"title":"Error Details"}},"type":"object","required":["id","webhook_url","event_type","timestamp"],"title":"WebhookRequestResponse","description":"The commercial delivery-attempt response — the status projection plus the payload.\n\nThe two additions are what makes this a PII-bearing read (see\n``docs/audit/adoption-roster.toml``): an integration token holder gets the\nbody Ospree delivered and the failure detail recorded against it."},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/webhooks/requests/{request_id}":{"post":{"tags":["Webhook Requests"],"summary":"Retry Webhook Request","description":"Retry a previously attempted webhook delivery.\n\nRe-sends the recorded payload to the endpoint's current URL and records a\nfresh delivery attempt, which is what the response carries. The original\nattempt is left in the log untouched.","operationId":"retry_webhook_request_api_v2_webhooks_requests__request_id__post","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Request Id"}}],"responses":{"200":{"description":"The delivery was retried. The body is the new attempt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse_WebhookRequestResponse_"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"404":{"description":"No delivery attempt with this id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"422":{"description":"Unprocessable Entity - Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
