plaid

List webhook events

The /beta/webhook_events/list endpoint returns webhook events Plaid sent to the calling client within the last 7 days. Results are ordered by sent_time ascending and cursor paginated so clients can recover missed webhook deliveries and deduplicate on webhook_message_id.

Filtering is optional. When multiple filter fields are set (webhook_types, webhook_codes, item_ids, delivery_statuses), they are combined with AND across fields and OR within each array (for example, webhook_types: ["ITEM", "AUTH"] matches either type).

Recommended pagination workflow:

  1. First call: omit cursor, and optionally set start_time within the last 7 days (or omit start_time to begin at the oldest retained event).
  2. Subsequent calls: pass next_cursor as cursor. Do not send start_time with cursor — the two fields are mutually exclusive. Sending both returns INVALID_FIELD.
  3. Persist next_cursor even when has_more is false, then reuse it on the next poll so you only receive events newer than what you have already seen.
  4. If a stored cursor is older than the 7-day retention window, the API returns WEBHOOK_EVENTS_CURSOR_EXPIRED; restart with a start_time within the last 7 days. Events older than the retention window are no longer available.

Errors:

WEBHOOK_EVENTS_START_TIME_OUT_OF_RANGE (400) is returned when start_time is earlier than the 7-day retention window. Retry with a start_time within the last 7 days, or omit it.

WEBHOOK_EVENTS_CURSOR_EXPIRED (400) is returned when the cursor's position is older than the 7-day retention window and can no longer be resolved. Restart pagination with a start_time within the last 7 days.

INVALID_FIELD (400) is returned when cursor is not a properly formatted string, when both cursor and start_time are provided, or when the request is otherwise invalid.

post/beta/webhook_events/list

Request body

client_idstring

Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.

secretstring

Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.

cursorstring

Opaque cursor from a prior /beta/webhook_events/list response next_cursor. Use this on subsequent requests to continue forward. Mutually exclusive with start_time: sending both returns INVALID_FIELD. Callers should send only one.

start_timestring date-time nullable

ISO-8601 timestamp. Returns webhook events with sent_time greater than or equal to this value. Must not be earlier than the 7-day retention window. Mutually exclusive with cursor: sending both returns INVALID_FIELD. Omit to begin from the oldest retained event. Callers should send only one of cursor or start_time.

countinteger nullable

Page size. Default 100, maximum 100.

webhook_typesstring[]

Filter by webhook type. Multiple values are OR'd. Combined with other filters using AND. Values are case-sensitive and match the webhook types Plaid sends (SCREAMING_SNAKE, for example ITEM or AUTH).

webhook_codesstring[]

Filter by webhook code. Multiple values are OR'd. Combined with other filters using AND. Values are case-sensitive and match the webhook codes Plaid sends (SCREAMING_SNAKE, for example ERROR).

item_idsstring[]

Filter to specific Items. Multiple values are OR'd. Combined with other filters using AND. Values are case-sensitive and match the Item IDs Plaid sends.

delivery_statusesWebhookEventDeliveryStatus[]

Filter by delivery status. Returns webhook events whose latest delivery state matches any of the supplied values. Combined with other filters using AND.

Example request

{
  "webhook_types": [
    "ITEM",
    "AUTH"
  ],
  "webhook_codes": [
    "ERROR"
  ],
  "item_ids": [
    "abc123"
  ]
}

Response

OK

has_moreboolean required

Indicates whether another page of webhook events is available.

next_cursorstring required

Cursor to pass as cursor on a later /beta/webhook_events/list request to continue forward. Persist and reuse this value even when has_more is false so the next poll only returns newer events.

request_idstring required

A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

Changes