> 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/nfts-tokens.md).

# NFTs / Tokens

The **ODK Token System** provides a unified way to track and synchronize player progress, rewards, achievements, and quests across the blockchain and experience.

Tokens can be used for **persistent state**, with each token type having a specific purpose and behavior.

***

### 🔍 What Is a Token?

In the context of ODK, a token is an on-chain data object that represents something the player owns.

Token are:

* **Minted and granted via the Creator Portal**
* **Stored in the player’s wallet**
* **Used to trigger or gate gameplay systems**
* **Synced in real-time between web, blockchain, and in-game logic**

All tokens follow a consistent format for their **Token ID**:

```
<ChainID>:<ContractAddress>:<TokenID>
```

Example:

```
33139:0x1122334455667788991122334455667788991100:3
```

| Component | Description                          |
| --------- | ------------------------------------ |
| `33139`   | Chain ID (e.g. APECHAIN)             |
| `0x...`   | Contract address for your experience |
| `3`       | Unique Token ID                      |

***

### 🧱 Supported Token Types

Each token is defined by its `type` field in metadata, which determines how it is handled in-game. This `type` is also used by the `TokenHandlers` map on the player wallet to route token logic.

| Type                  | Purpose                                                                                                   |
| --------------------- | --------------------------------------------------------------------------------------------------------- |
| `quest`               | Sequential multi-task experiences with reward support (See: [ODK Quests](/odk-docs/odk-plugin/quests.md)) |
| `achievement / badge` | Recognitions of completion, progress, or milestones                                                       |
| `image`               | Selfie/image tokens — used for storing screenshots or custom UGC                                          |
| `item`                | Inventory items (experimental or project-specific)                                                        |
| `custom`              | Any developer-defined use case (requires custom TokenHandler)                                             |

*Each type can have its own UI, reward logic, and flow triggers.*

***

### 🛠 Where Tokens Fit in Your Project

Tokens can:

* Start quest flows (by triggering `BP_ODK_TaskFlow`)
* Unlock achievements or badges
* Be displayed in user profiles or overlays
* Gate access to in-game systems or areas
* Be granted via Blueprint, server-side logic, or web interfaces

***

* 📜 [Quest Tokens](/odk-docs/odk-plugin/quests.md) – Multi-step task sequences with XP and rewards
* 🏆 Achievement Tokens – One-time accomplishments or stats
* 🎖️ Badge Tokens – Visual trophies or collectibles
* 🖼️ Image Tokens – Player-submitted images (e.g. selfies, UGC)
* ⚙️ Custom Token Types – Extending the system for new behaviors


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.otherside.xyz/odk-docs/odk-plugin/nfts-tokens.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
