# Lists webhook delivery logs

GET {{baseURL}}/v2/webhooks/delivery-logs
This endpoint lists webhook delivery logs for the merchant account.
Results are returned in pages of `pageSize` items, with a default of 20 and a maximum of 100 per page.
The `pageIndex` parameter selects which page to return, starting at 0.
The `endpointId` parameter narrows results to one webhook endpoint.
The `deliveryLogStatus` and `endpointHTTPResponseCode` parameters filter by delivery outcome.
The `fromDate` and `toDate` parameters filter by a date range.
See Also:
To list all available webhooks, see GET /v2/webhooks/endpoints.
To retrieve a specified delivery log, see GET /v2/webhooks/delivery-logs/{{endpointId}}.
To export delivery log, see GET /v2/webhooks/delivery-logs/export.
Query parameters may be combined to filter the exported results.

Endpoint: GET /v2/webhooks/delivery-logs
Version: V2 Beta
Security: Bearer

## Security:

  - `Bearer` (unknown)
    http bearer JWT

## Query parameters:

  - `pageIndex` (integer)
    Specifies the page number of the returned search results.

A page is considered each set of the `pageSize` values.

The page count is zero-based.
The maximum for `pageIndex`, or the page number, is the `pageSize` divided by the `total` count rounded down.
For example, the `pageSize` is 50 and the `total` is 130.
That means there are three pages, but the `pageIndex` value is in the inclusive range from zero to two.

Value restrictions include:
* A value less than zero is not permitted.<br>
* Values equal to or greater than `totalPages` end successfully but will not return any items.

For page size information, see `pageSize`.

Example: 0

  - `pageSize` (integer)
    Specifies the number of items for each page of the returned search results.

A page is considered each set of the `pageSize` values.

The page count is zero-based.
The maximum for `pageIndex`, or the page number, is the `pageSize` divided by the `total` count rounded down.
For example, the `pageSize` is 50 and the `total` is 130.
That means there are three pages, but the `pageIndex` value is in the inclusive range from zero to two.

For page numbering information, see `pageIndex`.

Example: 50

  - `sortBy` (string)
    Specifies a field name to sort the results by.

If null or omitted, results come back newest first.

The sort order is specified by the `sortOrder` value.

The following fields may be used to sort results:<br>
deliveryLogId<br>
endpointId<br>
endpointName<br>
endpointUrl<br>
eventId<br>
eventType<br>
attemptNumber<br>
status<br>
endpointHTTPResponseCode<br>
roundTripDurationMs<br>
errorMessage<br>
createdOn

Example: deliveryLogId

  - `sortOrder` (string)
    Specifies the sort order.

The sort order is specified by the `sortOrder` value.<br>
The field that gets sorted by is specified by the `sortBy` value.

Valid values are:

| Value  | Description                                               |
| ------ | --------------------------------------------------------- |
| asc    | Sorts results in ascending order, from the lowest value to the highest, or from the oldest timestamp to the most recent. |
| desc   | Sorts results in descending order, from the highest value to the lowest, or from the most recent timestamp to the oldest. |

  - `endpointId` (string)
    <br>Specifies a filter for the webhook identifier.

Example: 0dab4e68-8d18-42ce-93ba-77b0e8dbafdc

  - `eventType` (string)
    Filters delivery logs to a single event type.

Omit this parameter to include all event types.

Valid values are:

| Wire value                    | Meaning | Group |
|-------------------------------|---|---|
| api_key.created               | An API key was created | API Keys (affiliate only) |
| api_key.deleted               | An API key was revoked or deleted | API Keys (affiliate only) |
| invoice.created               | A new invoice was created | Invoices |
| invoice.paid                  | An invoice was marked as paid | Invoices |
| merchant.created              | A new merchant account was created | Merchants (affiliate only) |
| payment_session.completed     | A payment session reached a terminal state (completed, failed, or canceled) | Payment Sessions |
| payment_session.created       | A payment session was created | Payment Sessions |
| quick_payment.created         | A quick payment link was created | Quick Payments |
| quick_payment.paid            | A quick payment link was paid | Quick Payments |
| settlement.batch.completed    | A batch settlement was processed and settled | Settlement |
| subscription.created          | A new subscription was created | Subscriptions |
| subscription.delinquent       | A subscription entered a delinquent state after repeated payment failures | Subscriptions |
| subscription.paid             | A subscription payment was successfully collected | Subscriptions |
| subscription.payment_failed   | A subscription payment attempt failed | Subscriptions |
| terminal.added                | A new terminal was registered to the account | Terminals |
| terminal.deactivated          | A terminal was deactivated on the account | Terminals |
| terminal.out_of_paper         | A terminal paper roll is empty | Terminals |
| transaction.ach.cancelled     | An ACH transaction was canceled before processing | ACH Transactions |
| transaction.ach.charged_back  | An ACH transaction was returned or charged back | ACH Transactions |
| transaction.ach.cleared       | An ACH transaction successfully cleared | ACH Transactions |
| transaction.ach.failed        | An ACH transaction failed due to a processing error | ACH Transactions |
| transaction.ach.held          | An ACH transaction was placed on hold for review | ACH Transactions |
| transaction.ach.in_progress   | An ACH transaction was submitted to the network | ACH Transactions |
| transaction.ach.refunded      | An ACH transaction was refunded to the originator | ACH Transactions |
| transaction.ach.scheduled     | An ACH transaction was created and scheduled | ACH Transactions |
| transaction.card.authorized   | A card payment authorization was approved | Card Transactions |
| transaction.card.captured     | An authorized card payment was captured | Card Transactions |
| transaction.card.declined     | A card payment was declined by the issuer | Card Transactions |
| transaction.card.failed       | A card payment failed due to a processing error | Card Transactions |
| transaction.card.refunded     | A card payment was refunded to the cardholder | Card Transactions |
| transaction.card.voided       | A card authorization was voided before capture | Card Transactions |

Example: transaction.card.captured

  - `deliveryLogStatus` (string)
    Filters by the delivery success status code.

| HTTP Status | Meaning |
|-------------|---------|
| Success     | Delivery succeeded |
| Failure     | Delivery failed |

Example: Success

  - `endpointHTTPResponseCode` (integer)
    Filters by the HTTP response status code.

This is the HTTP status code returned by the attempted delivery.

The following is a list of HTTP response status codes that include but are not limited to:

| HTTP Status | Meaning |
|:-----------:|---------|
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401

  - `fromDate` (string)
    Specifies a filter to return items at or after this date-time (in an ISO 8601 date-time format).

If only `fromDate` is specified, the search returns all available items from the `fromDate` value to the present.
The fields `fromDate` and `toDate` may be used together to create an inclusive range.
We recommend creating an inclusive range to avoid a potentially excessive number of returns.

Example: 2025-01-27T12:05:54.322Z

  - `toDate` (string)
    Specifies a filter to return items at or before this date-time (in an ISO 8601 date-time format).

If only `toDate` is specified, the search returns all available items up to the `toDate` value.
The fields `fromDate` and `toDate` may be used together to create an inclusive range.
We recommend creating an inclusive range to avoid a potentially excessive number of returns.

Example: 2026-02-27T12:05:54.322Z

  - `search` (string)
    Filters using a search string.

This performs a case-insensitive search that matches exactly or partially.

The field does not have to be specified.
If the results are to be sorted, use the `orderby` field to specify the sort field.

The search includes the following fields:<br>
EventId (Exact match and complete UUID only. Otherwise, this value is ignored.)<br>
WebhookName<br>
EndpointUrl

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `data` (array)

  - `data.deliveryLogId` (string)
    Indicates the webhook delivery log identifier to retrieve.

Example: 89a2c8d9-0e1f-4a2b-3c4d-5e6f7a8b9c25
    Example: 89a2c8d9-0e1f-4a2b-3c4d-5e6f7a8b9c25

  - `data.endpointId` (string)
    Indicates the webhook endpoint identifier.

Example: 9ab3d9e0-1f2a-4b3c-4d5e-6f7a8b9c0d36
    Example: 9ab3d9e0-1f2a-4b3c-4d5e-6f7a8b9c0d36

  - `data.endpointName` (string)
    Indicates the display name for the webhook.

This is a free-formed name that is convenient to recognize.

Example: Peppared Street Cafe's Reconciliation
    Example: Peppared Street Cafe's Reconciliation

  - `data.endpointUrl` (string)
    Indicates the HTTPS callback URL that receives webhook events.

Example: https://example.com/webhooks/pepparedstreetcafe
    Example: https://example.com/webhooks/pepparedstreetcafe

  - `data.eventId` (string)
    Indicates the event identifier.

Example: 399f9d7d-0714-453c-9b6d-dda836e1d8e6
    Example: 399f9d7d-0714-453c-9b6d-dda836e1d8e6

  - `data.eventType` (string)
    Identifies events that are subscribed to.
Valid values are:
| Wire value | Meaning | Group |
|  --- | --- | --- |
| api_key.created | An API key was created | API Keys (affiliate only) |
| api_key.deleted | An API key was revoked or deleted | API Keys (affiliate only) |
| invoice.created | A new invoice was created | Invoices |
| invoice.paid | An invoice was marked as paid | Invoices |
| merchant.created | A new merchant account was created | Merchants (affiliate only) |
| payment_link.created | A payment link was created | Payment Links |
| payment_link.updated | A payment link was updated | Payment Links |
| payment_session.completed | A payment session reached a terminal state (completed, failed, or canceled) | Payment Sessions |
| payment_session.created | A payment session was created | Payment Sessions |
| quick_payment.created | A quick payment link was created | Quick Payments |
| quick_payment.paid | A quick payment link was paid | Quick Payments |
| settlement.batch.completed | A batch settlement was processed and settled | Settlement |
| subscription.created | A new subscription was created | Subscriptions |
| subscription.delinquent | A subscription entered a delinquent state after repeated payment failures | Subscriptions |
| subscription.paid | A subscription payment was successfully collected | Subscriptions |
| subscription.payment_failed | A subscription payment attempt failed | Subscriptions |
| terminal.added | A new terminal was registered to the account | Terminals |
| terminal.deactivated | A terminal was deactivated on the account | Terminals |
| terminal.out_of_paper | A terminal paper roll is empty | Terminals |
| transaction.ach.cancelled | An ACH transaction was canceled before processing | ACH Transactions |
| transaction.ach.charged_back | An ACH transaction was returned or charged back | ACH Transactions |
| transaction.ach.cleared | An ACH transaction successfully cleared | ACH Transactions |
| transaction.ach.failed | An ACH transaction failed due to a processing error | ACH Transactions |
| transaction.ach.held | An ACH transaction was placed on hold for review | ACH Transactions |
| transaction.ach.in_progress | An ACH transaction was submitted to the network | ACH Transactions |
| transaction.ach.refunded | An ACH transaction was refunded to the originator | ACH Transactions |
| transaction.ach.scheduled | An ACH transaction was created and scheduled | ACH Transactions |
| transaction.card.authorized | A card payment authorization was approved | Card Transactions |
| transaction.card.captured | An authorized card payment was captured | Card Transactions |
| transaction.card.declined | A card payment was declined by the issuer | Card Transactions |
| transaction.card.failed | A card payment failed due to a processing error | Card Transactions |
| transaction.card.refunded | A card payment was refunded to the cardholder | Card Transactions |
| transaction.card.voided | A card authorization was voided before capture | Card Transactions |

Examples:
null
[ "transaction.card.captured" ]
[ "transaction.card.captured", "transaction.card.authorized" ]
    Enum: "api_key.created", "api_key.deleted", "invoice.created", "invoice.paid", "merchant.created", "payment_link.created", "payment_link.updated", "payment_session.completed", "payment_session.created", "quick_payment.created", "quick_payment.paid", "settlement.batch.completed", "subscription.created", "subscription.delinquent", "subscription.paid", "subscription.payment_failed", "terminal.added", "terminal.deactivated", "terminal.out_of_paper", "transaction.ach.cancelled", "transaction.ach.charged_back", "transaction.ach.cleared", "transaction.ach.failed", "transaction.ach.held", "transaction.ach.in_progress", "transaction.ach.refunded", "transaction.ach.scheduled", "transaction.card.authorized", "transaction.card.captured", "transaction.card.declined", "transaction.card.failed", "transaction.card.refunded", "transaction.card.voided"

  - `data.attemptNumber` (integer)
    Indicates the current delivery attempt number for the webhook.

Example: 3
    Example: 3

  - `data.status` (string)
    Indicates the webhook delivery log status.
Valid values are:
| Status | Explanation |
|  --- | --- |
| Failure | The webhook delivery attempt did not succeed. |
| Success | The webhook delivery attempt succeeded. |

Example: Success
    Enum: "Success", "Failure"

  - `data.endpointHTTPResponseCode` (integer)
    Indicates the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 200
    Example: 200

  - `data.roundTripDurationMs` (integer)
    Indicates the round-trip duration (in milliseconds).

Example: 367
    Example: 367

  - `data.errorMessage` (string)
    Indicates an error message if the delivery failed.

Example: Recipient not available
    Example: Recipient not available

  - `data.createdOn` (string)
    Indicates the date-time (in an ISO 8601 UTC date-time format) the webhook was created on.

Example: 2025-01-27T12:05:54.322Z
    Example: 2025-01-27T12:05:54.322Z

  - `pageInfo` (object)
    Indicates an object describing the pagination status.
If additional pages to review are needed, repeat the exact same search but include a new pageIndex value.
Typically, this will increment the current `pageIndex` by one.
However, any valid value may be used.
Value restrictions include:
* A value less than zero is not permitted.
* Values equal to or greater than `totalPages` end successfully but will not return any items.

  - `pageInfo.pageIndex` (integer)
    Indicates the page number from the search results.
The pageIndex value is zero-based.
Valid values range from zero to `totalPages` less one.
For example, if `totalPages` = 10, then the valid range is zero to nine.
Example: 0
    Example: 0

  - `pageInfo.pageSize` (integer)
    Indicates the number of items returned per page.

Example: 20
    Example: 20

  - `pageInfo.totalItems` (integer)
    Indicates the total number of items across all pages.

Example: 1012
    Example: 1012

  - `pageInfo.totalPages` (integer)
    Indicates the total number of pages available.

Example: 51
    Example: 51

  - `pageInfo.hasMore` (boolean)
    Indicates additional pages are available after the current one.
If `true`, additional pages are available after the current one.
If `false`, additional pages are not available after the current one.
Example: true
    Example: true

## Response 400:

  - `400` (unknown)
    Bad Request

## Response 400 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 500:

  - `500` (unknown)
    Internal Server Error

## Response 500 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

