> ## Documentation Index
> Fetch the complete documentation index at: https://docs.endstate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# endstate.taps.list

> Returns a cursor-paginated history of verified taps, oldest first. Each item's `id` is the same identifier returned by the call that recorded the tap. Filter by chip, unit, or time window; by default only taps of encoded chips on physical items are returned - set `is_test` to `true` for test-chip taps instead.

```ts theme={null}
list(query?: TapsListParams, options?: RequestOptions): Paginated<TapListItem, ListTapsResponse>
```

|             |                                                 |
| ----------- | ----------------------------------------------- |
| Endpoint    | [`GET /v1/taps`](/api-reference/taps/list-taps) |
| Credential  | Secret key (`end_sk_...`)                       |
| Retry class | `read`                                          |

Retried on network failure, timeout, `429`, and `5xx`.

## Example

```ts theme={null}
const result = await endstate.taps.list();
```

## Parameters

<ParamField body="limit" type="integer">
  Maximum number of records to return. Defaults to 50; maximum 100.
</ParamField>

<ParamField body="cursor" type="string">
  Opaque cursor from the previous page.
</ParamField>

<ParamField body="chip_id" type="string">
  Only taps of this chip.
</ParamField>

<ParamField body="unit_id" type="string">
  Only taps of chips paired to this unit.
</ParamField>

<ParamField body="created_after" type="string">
  Only taps recorded strictly after this ISO-8601 timestamp.
</ParamField>

<ParamField body="created_before" type="string">
  Only taps recorded strictly before this ISO-8601 timestamp.
</ParamField>

<ParamField body="is_test" type="'true' | 'false'">
  Set `true` to return taps of test chips instead. Defaults to `false`: only taps of encoded chips on physical items are returned.
</ParamField>

## Returns

`200` - `ListTapsResponse`.

<ResponseField name="taps" type="object[]" required />

<ResponseField name="pagination" type="object" required />

## Errors

Branch on `error.code`, never on the HTTP status - several codes share one.

| Code                  | HTTP | Retry         |
| --------------------- | ---- | ------------- |
| `auth.unauthorized`   | 401  | Do not retry  |
| `internal.error`      | 500  | Safe to retry |
| `rate_limit.exceeded` | 429  | Safe to retry |
| `validation.failed`   | 400  | Do not retry  |

See [Errors and retries](/sdks/core/errors-and-retries) for the error types and how to narrow them.
