> 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/using-the-creator-portal/creating-a-quest-token.md).

# Creating a Quest token

***

#### 🔹 1. Create a New Quest Token

* Click **“Define New Object”**
* Select your experience from the dropdown
* Choose the **“Quest”** template
* You’ll now see the Quest definition form

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXekm0ExoW1OrGOdVu8AUMwU1U9C32vKuFw5YVzWFr2sk1VnPzlkFKgSHSjljb8rno5MP_wNuEClkZY-HPwZwbycw1wVbhQCDsi8l9Kv-inWs2nk-egin5wjlLy2KLV45VgrT6GzLw?key=8w1vBQkukukfjaQXC7oC43Nq" alt=""><figcaption></figcaption></figure>

***

#### 🔹 2. Fill Out the Quest Metadata Form

**🏷️ General Fields**

| Field             | Purpose                                                 |
| ----------------- | ------------------------------------------------------- |
| **`name`**        | Display name of the quest                               |
| **`description`** | Summary of what the quest is about                      |
| **`image`**       | URL to the image shown in UI                            |
| **`type`**        | Must be `"quest"` — this enables quest tracking in-game |

***

**📦 `quest` Object Fields**

| Field           | Description                                                                                                                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`group`**     | Logical group for filtering in UI or in-game                                                                                                                                                            |
| **`xp`**        | Optional XP awarded on completion                                                                                                                                                                       |
| **`tasks[]`**   | List of task definitions, each with a `title` and `description`                                                                                                                                         |
| **`rewards[]`** | Optional: Array of Token IDs to grant on quest completion. For help creating a badge, see [Creating a Badge token](/odk-docs/odk-plugin/nfts-tokens/using-the-creator-portal/creating-a-badge-token.md) |

After completing the form, you will be presented with the generated metadata

***

**🧾 Example Quest Token Metadata**

```json
jsonCopyEdit{
  "name": "Example Quest",
  "description": "Do your exercises",
  "image": "https://generatedimage.link",
  "type": "quest",
  "quest": {
    "type": "global",
    "group": "whitespace",
    "displayType": "quantity",
    "completionQuantity": 4,
    "xp": 123,
    "tasks": [
      {
        "title": "Jump 3 Times",
        "description": "Perform 3 jumps to get your body moving!"
      },
      {
        "title": "Run 500m",
        "description": "Run a total distance of 500 meters. Cardio is key!"
      },
      {
        "title": "Glide for 100m",
        "description": "Glide gracefully through the air for at least 100 meters!"
      }
    ],
    "rewards": [
      "33139:0x1122334455667788991122334455667788991100:3",
      "33139:0x1122334455667788991122334455667788991100:4"
    ]
  }
}
```

***

📌 **Important: `completionQuantity` will be automatically set to one more than the number of tasks**\
This accounts for:

* 1 token to **start** the quest
* 1 token per **completed task**

**Example**: 3 tasks → `completionQuantity: 4`\
→ 1 token to start + 3 tokens for each completed task.

Before minting:

Once development is complete this token should be non-transferable so that users cannot trade progress or restart the quest, but during the development process it is better to set this to transferable so that it can be deleted from a users wallet and allow the user to retry the quest.

* **Price** → usually `0` for dev
* **Transferable**:
  * ✅ **True** during dev — allows testing/resetting progress
  * 🚫 **False** for production — prevents replaying quests via trading tokens

***

#### 🔹 6. Mint the Token

After saving, click **“Mint”**.

You’ll be returned to the creator dashboard and shown a **Token ID** in this format:

```
ChainID:ContractAddress:TokenID
```

Example:

```
33139:0x1122334455667788991122334455667788991100:1
```

| Part        | Meaning                              |
| ----------- | ------------------------------------ |
| `33139`     | Chain ID (APECHAIN)                  |
| `0x1122...` | Contract address for your experience |
| `:1`        | Unique identifier for this token     |

***

#### 🔹 7. Preview & Access Metadata

* You can click the token’s **image** on the dashboard to view metadata.
* This page reflects the JSON you just configured and is used in-game by clients and UI.
* You can update the token metadata at any time using the "Update Metadata" button


---

# 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, and the optional `goal` query parameter:

```
GET https://docs.otherside.xyz/odk-docs/odk-plugin/nfts-tokens/using-the-creator-portal/creating-a-quest-token.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
