List Webhook Deliveries
Lists the webhooks a custody provider has delivered to the platform and what came of each, newest first. The request snapshot (headers, body) is left out of the rows; read one delivery with Get Webhook Delivery.
One delivery can produce more than one row: each processing side records its own outcome, so a delivery may appear once per context (admin, user). webhook_id ties those rows together.
Platform owner only. The caller's node must be the platform root node; any other caller is refused with 403 / 10005.
Required permission: custodial-wallet:view
Request
GET /v2/admin/custodial-wallets/{provider}/webhook-logs
Parameters
| Name | Type | In | Description |
|---|---|---|---|
provider | string | path | Required. Provider key: rudiq or taurus |
page | integer | query | Required. Page number, starting at 1 |
per_page | integer | query | Required. Items per page, 1–100 |
context | string | query | Only rows of this processing side: admin or user |
statuses | string | query | Only rows with these outcomes: processed, unmatched, skipped, failed. Repeat the parameter for several (statuses=failed&statuses=skipped) |
transaction_id | string | query | Only rows for this Custody Transaction ID: the id custody returned when it accepted the operation |
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Example
curl --request GET \
--url '{{baseUrl}}/v2/admin/custodial-wallets/rudiq/webhook-logs?page=1&per_page=20&statuses=failed&statuses=skipped' \
--header 'Authorization: Bearer <access_token>'
Response
{
"data": [
{
"id": "6911c1a7e4b0f51d2c8a7f10",
"webhook_id": "8d0c6a52-3f7e-4b19-9a2d-51e4c7b0f3a6",
"context": "admin",
"provider": "rudiq",
"source_ip": "10.42.3.17",
"transaction_id": "4c1a9b4e-0000-4000-8000-00000000abcd",
"custody_transaction_id": "9b2e7d14-0000-4000-8000-0000000017f3",
"gas_fee_wei": "52341000000000",
"gas_fee_native": "0.000052341",
"transaction_hash": "0x5b8e2f4c1d9a7b3e6f0a2c4d8e1b3f5a7c9d0e2f4a6b8c0d1e3f5a7b9c2d4e6f",
"transaction_type": "deploy_contract",
"transaction_status": "completed",
"status": "processed",
"received_at": "2026-11-09T09:41:22.508Z",
"created_at": "2026-11-09T09:41:22.734Z"
}
],
"total": 1,
"page": 1,
"per_page": 20
}
Response Fields
| Field | Type | Description |
|---|---|---|
data | array | Delivery rows on this page |
data[].id | string | Row id; pass it to Get Webhook Delivery |
data[].webhook_id | string | The sender's id for the delivery, shared by the rows of each processing side |
data[].context | string | Processing side that wrote the row: admin or user |
data[].provider | string | Provider key |
data[].source_ip | string | IP address the delivery came from |
data[].transaction_id | string | Custody Transaction ID: the id custody returned when it accepted the operation, and the key the platform matches its transaction on |
data[].custody_transaction_id | string | Custody's own row id for the transaction. Omitted when custody sent none |
data[].external_id | string | Custody's reconciliation id. Omitted when custody sent none |
data[].gas_fee_wei | string | Gas fee custody paid, in wei. Omitted when custody sent none |
data[].gas_fee_native | string | Gas fee custody paid, in the network's native currency. Omitted when custody sent none |
data[].transaction_hash | string | On-chain transaction hash |
data[].transaction_type | string | Custody's type for the operation, verbatim (e.g. transfer, deploy_contract, execute_contract) |
data[].transaction_status | string | Custody's status for the operation, verbatim |
data[].status | string | Outcome on this processing side: processed (matched and applied), unmatched (no transaction of this side has the id), skipped (matched but deliberately not applied, e.g. already final) or failed (processing returned an error) |
data[].error | string | Why processing failed. Omitted when there is no error |
data[].received_at | string | When the delivery reached the platform (ISO 8601) |
data[].created_at | string | When the row was written (ISO 8601) |
total | integer | Number of rows matching the filters |
page | integer | Page number sent in the request |
per_page | integer | Page size sent in the request |
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | Validation failed (page / per_page missing or out of range) — see details. Also: unsupported provider key |
| 403 | 10005 | The caller is not the platform owner (domain 2) |
See Errors for the error format and common codes.