> For the complete documentation index, see [llms.txt](https://docs.otherside.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherside.xyz/odk-docs/odk-plugin/wallets/wallet-views.md).

# Wallet Views

### Overview

Wallet views allow you to filter the tokens in your wallets. If you want to get all koda cam photo tokens, you can use wallet views for that.

To get tokens in a view, simply call `GetWalletView` on the `BP_ODK_WalletWorldService`. You will need to pass in the `WalletViewClass` for the wallet view you care about.

<figure><img src="https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2Fgit-blob-bb6aafc8f3acebc649a4d2bbddc5ce3c000fd367%2Fimage.png?alt=media" alt=""><figcaption><p>Example of grabbing tokens in a view</p></figcaption></figure>

### Creating Wallet Views

You can define new wallet views by creating a new child of `BP_ODK_WalletView`. Then all you need to do is override `IsRelevantToken` on the wallet view to filter for tokens your view cares about. Here is an example of koda cam photos:

<figure><img src="https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2Fgit-blob-94b9600fa7475b30e906d2c4c1b4d6433ec76459%2Fimage.png?alt=media" alt=""><figcaption><p>Example filtering logic</p></figcaption></figure>

IMPORTANT: You can create your own custom views but should only do so if there is not an existing view that already filters in the same way. Having duplicate filter logic in two views will reduce the efficiancy of the system unnecessarily.

### Checking Tokens

You can use `IsTokenDataRelevantToView` to check if a token fulfils the filter criteria of a wallet view. In the case below, we check if the token represents ownership of an emote.

<figure><img src="https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2Fgit-blob-440e81a2275845bac097a520c28fe07bf6dfbdbe%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### Binding to Wallet View Events

You can bind to event on wallet views to be informed when tokens of a particular type change in your wallet. In the case below, we want to be informed whenever koda cam photos have been added or removed from a wallet. This particular event batches adds and removes together so that over a given frame, if there are multiple add and remove token events, the event will only be broadcast once.

<figure><img src="https://33425813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbIBFTVTQoxu1YByrB4tU%2Fuploads%2Fgit-blob-d89260924c37252e851c76886f0aa48b13e47138%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.otherside.xyz/odk-docs/odk-plugin/wallets/wallet-views.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
