# MapleStory Universe

> Read MapleStory Universe, Nexon's blockchain MapleStory ecosystem, through its Open API: a wallet's NESO, currencies, NFT collections, items and characters; a character's stats, inventory, skills, V-Matrix, quests and history; an NFT item's details and history; the game's item, quest, skill and V-Matrix metadata and the going price of Star Force and Potential enhancement; the marketplace's items, characters and nicknames for sale, with keyword suggestions and valuations; and MapleStory N's reward and raffle data. Read-only, with a builder's API key.

App · Gaming · 33 actions. Web page: https://docs.lodol.com/docs/integrations/maplestory-universe

## Actions

### Explore characters for sale

The NFT characters listed for sale on the marketplace, a page at a time, filtered by name, class, job, attack power, price and level, and sorted.

**Inputs**

- Name (`name`, text): Optional: only characters whose name contains this (matching case).
- Class (`character_class`, text): Optional: only characters of one class. One of: `warrior`, `magician`, `bowman`, `thief`, `pirate`, `all_classes` (All classes).
- Job (`job`, text): Optional: only characters of one job, in MSU's spelling, such as bishop, dark_knight or night_walker; every advancement of the job is included.
- Lowest attack power (`min_attack_power`, number): Optional: only characters with at least this attack power. At least 1.
- Lowest price (`price_min`, number): Optional: only listings at this many NESO or more. At least 0.
- Highest price (`price_max`, number): Optional: only listings at this many NESO or less. At least 0.
- Lowest level (`level_min`, number): Optional: only listings at this level or above. At least 0.
- Highest level (`level_max`, number): Optional: only listings at this level or below. At least 0.
- Sort by (`sorting`, text): Optional: the order the listings come back in. One of: `highest_price` (Highest price), `lowest_price` (Lowest price), `ending_soon` (Ending soon), `recently_listed` (Recently listed), `highest_attack_power` (Highest attack power).
- Page (`page`, number): Which page of results, counting from 1. At least 1. Default: `1`.
- Page size (`page_size`, number): How many listings a page holds. MSU's default is 30, and a page may not start past listing 10,000. From 1 to 10000. Default: `30`.
- Seller's wallet (`wallet_address`, text): Optional: only listings from this wallet address, 0x followed by forty hex digits.

**Outputs**

- `characters` (list): The listings on this page.
- `count` (number): How many listings came back.
- `is_last_page` (true/false): True when there is no page after this one.
- `page` (number): The page this is.
- `page_size` (number): How many a page holds.
- `status` (text): Status of the action execution ("success" on success).
- `total_count` (number): How many listings match in all, across every page.

**Example output**

```json
{
  "characters": [
    {
      "assetKey": "c_9f1e2d3c4b5a6978",
      "class": "magician",
      "isTradable": true,
      "job": "bishop",
      "level": 215,
      "name": "Mapler",
      "price": "250000",
      "sellerAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234",
      "tokenId": "128934",
      "worldId": 1
    }
  ],
  "count": 1,
  "is_last_page": true,
  "page": 1,
  "page_size": 30,
  "status": "success",
  "total_count": 1
}
```

### Explore items for sale

The NFT items listed for sale on the marketplace, a page at a time, filtered by name, item, category, class, colour, price, level, Star Force and Potential, and sorted.

**Inputs**

- Name (`name`, text): Optional: only items whose name contains this (matching case).
- Item ID (`item_id`, number): Optional: only copies of one item, by the game's item id. At least 0.
- Category number (`category_no`, number): Optional: only items in one of MSU's item categories, by its number (Get item category gives an item's). Leave empty for every category. At least 0.
- Minting number (`minting_no`, number): Optional: only the copy with this minting number. At least 0.
- Classes (`classes`, text): Optional: only items a chosen class can use. One or more of: `warrior`, `magician`, `bowman`, `thief`, `pirate`, `all_classes` (All classes).
- Achieved by character (`achieved_character_name`, text): Optional: only items whose history was made by this character, by its exact name.
- Colours (`colors`, text): Optional: for beauty and hair items, only these colours. One or more of: `black`, `red`, `orange`, `yellow`, `green`, `blue`, `violet`, `hazel`, `sapphire`, `amethyst`, `all_colors` (All colours).
- Pet skills (`pet_skills`, list): Optional: for pets, only ones with any of these skill codes.
- Lowest price (`price_min`, number): Optional: only listings at this many NESO or more. At least 0.
- Highest price (`price_max`, number): Optional: only listings at this many NESO or less. At least 0.
- Lowest level (`level_min`, number): Optional: only listings at this level or above. At least 0.
- Highest level (`level_max`, number): Optional: only listings at this level or below. At least 0.
- Lowest Star Force (`starforce_min`, number): Optional: only items with at least this many stars, 0 to 25. From 0 to 25.
- Highest Star Force (`starforce_max`, number): Optional: only items with at most this many stars, 0 to 25. From 0 to 25.
- Lowest Potential (`potential_min`, number): Optional: only items with at least this Potential grade: 0 Normal, 1 Rare, 2 Epic, 3 Unique, 4 Legendary. From 0 to 4.
- Highest Potential (`potential_max`, number): Optional: only items with at most this Potential grade, 0 to 4. From 0 to 4.
- Lowest Bonus Potential (`bonus_potential_min`, number): Optional: only items with at least this Bonus Potential grade, 0 to 4. From 0 to 4.
- Highest Bonus Potential (`bonus_potential_max`, number): Optional: only items with at most this Bonus Potential grade, 0 to 4. From 0 to 4.
- Sort by (`sorting`, text): Optional: the order the listings come back in. One of: `highest_price` (Highest price), `lowest_price` (Lowest price), `ending_soon` (Ending soon), `recently_listed` (Recently listed).
- Page (`page`, number): Which page of results, counting from 1. At least 1. Default: `1`.
- Page size (`page_size`, number): How many listings a page holds. MSU's default is 30, and a page may not start past listing 10,000. From 1 to 10000. Default: `30`.
- Seller's wallet (`wallet_address`, text): Optional: only listings from this wallet address, 0x followed by forty hex digits.

**Outputs**

- `count` (number): How many listings came back.
- `is_last_page` (true/false): True when there is no page after this one.
- `items` (list): The listings on this page.
- `page` (number): The page this is.
- `page_size` (number): How many a page holds.
- `status` (text): Status of the action execution ("success" on success).
- `total_count` (number): How many listings match in all, across every page.

**Example output**

```json
{
  "count": 2,
  "is_last_page": false,
  "items": [
    {
      "assetKey": "i_a1b2c3d4e5f60718",
      "categoryNo": 100,
      "itemId": 1003797,
      "mintingNo": 17,
      "name": "Zakum Helmet",
      "potentialGrade": 2,
      "price": "15000",
      "sellerAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234",
      "starforce": 12,
      "tokenId": "558201"
    },
    {
      "assetKey": "i_0f9e8d7c6b5a4932",
      "categoryNo": 107,
      "itemId": 1072344,
      "mintingNo": 3,
      "name": "Facestompers",
      "potentialGrade": 1,
      "price": "9800",
      "sellerAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234",
      "starforce": 8,
      "tokenId": "558244"
    }
  ],
  "page": 1,
  "page_size": 30,
  "status": "success",
  "total_count": 412
}
```

### Explore nicknames for sale

The nickname NFTs listed for sale on the marketplace, a page at a time, filtered by text, length, make-up and price, and sorted.

**Inputs**

- Name (`name`, text): Optional: only nicknames containing this (any case).
- Lengths (`name_lengths`, list): Optional: only nicknames of these lengths, one number per entry.
- Lowest price (`price_min`, number): Optional: only listings at this many NESO or more. At least 0.
- Highest price (`price_max`, number): Optional: only listings at this many NESO or less. At least 0.
- Made of (`character_sets`, text): Optional: only nicknames made of letters, of digits, or of both. One or more of: `alphabet_only` (Letters only), `numeric_only` (Digits only), `mixed` (Letters and digits).
- Sort by (`sorting`, text): Optional: the order the listings come back in. One of: `highest_price` (Highest price), `lowest_price` (Lowest price), `ending_soon` (Ending soon), `recently_listed` (Recently listed).
- Page (`page`, number): Which page of results, counting from 1. At least 1. Default: `1`.
- Page size (`page_size`, number): How many listings a page holds. MSU's default is 30, and a page may not start past listing 10,000. From 1 to 10000. Default: `30`.
- Seller's wallet (`wallet_address`, text): Optional: only listings from this wallet address, 0x followed by forty hex digits.

**Outputs**

- `count` (number): How many listings came back.
- `is_last_page` (true/false): True when there is no page after this one.
- `nicknames` (list): The listings on this page.
- `page` (number): The page this is.
- `page_size` (number): How many a page holds.
- `status` (text): Status of the action execution ("success" on success).
- `total_count` (number): How many listings match in all, across every page.

**Example output**

```json
{
  "count": 2,
  "is_last_page": false,
  "nicknames": [
    {
      "nickname": "Maple",
      "price": "80000",
      "sellerAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234",
      "tokenId": "9001"
    },
    {
      "nickname": "Orbis7",
      "price": "12000",
      "sellerAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234",
      "tokenId": "9002"
    }
  ],
  "page": 1,
  "page_size": 30,
  "status": "success",
  "total_count": 412
}
```

### Get asset valuation

What one asset, or copies of one item, traded for over the last 30, 90 or 180 days: the average price and how many trades.

**Inputs**

- Asset key (`asset_key`, text): The asset's key. Give this or an item ID.
- Item ID (`item_id`, number): The game's item id. Give this or an asset key. At least 0.
- Period (`period`, text): How far back the trades go: 30, 90 (the default) or 180 days. One of: `30` (30 days), `90` (90 days), `180` (180 days). Default: `90`.

**Outputs**

- `asset_key` (text): The asset key asked about, or ''.
- `average_price` (number): The average price traded at, in NESO.
- `date` (text): The date the figures were worked out for.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item_id` (number): The item id asked about, or null.
- `note` (text): Why nothing was found, or '' when something was.
- `period_days` (number): How many days back the trades go.
- `status` (text): Status of the action execution ("success" on success).
- `trade_count` (number): How many trades there were in the period.

**Example output**

```json
{
  "asset_key": "",
  "average_price": 14250.5,
  "date": "2026-10-09",
  "found": true,
  "item_id": 1003797,
  "note": "",
  "period_days": 90,
  "status": "success",
  "trade_count": 37
}
```

### Get character

One character in full: its stats, equipped gear, abilities and the rest of what MSU records, by asset key or token ID.

**Inputs**

- Character (`character`, text, required): The character's asset key, or its token ID when Look up by says so, or a character record from an earlier step such as List wallet characters or Explore characters for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.

**Outputs**

- `character` (object): The character as MSU records it: stats, equipped gear, abilities and more. Empty when not found.
- `character_key` (text): The character's key as given.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `lookup` (text): How the key was read: asset_key or token_id.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "character": {
    "assetKey": "c_9f1e2d3c4b5a6978",
    "attackPower": 1250000,
    "class": "magician",
    "exp": "1284930012",
    "isTradable": true,
    "job": "bishop",
    "level": 215,
    "name": "Mapler",
    "tokenId": "128934",
    "walletAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234",
    "worldId": 1
  },
  "character_key": "c_9f1e2d3c4b5a6978",
  "found": true,
  "lookup": "asset_key",
  "note": "",
  "status": "success"
}
```

### Get character raffle history

How a character fared in a MapleStory N reward draw, up to 30 days after it, for the wallet that holds it.

**Inputs**

- Character asset key (`character_asset_key`, text, required): The character's asset key, or a character record from an earlier step.
- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.
- Draw time (`raffled_at`, date and time, required): When the reward draw was held. MSU keeps a draw's history for 30 days after it.

**Outputs**

- `character_asset_key` (text): The character's asset key.
- `count` (number): How many raffle results came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `histories` (list): One record per raffle result.
- `note` (text): Why nothing was found, or '' when something was.
- `raffled_at` (text): The draw time asked about, as an ISO 8601 UTC instant.
- `status` (text): Status of the action execution ("success" on success).
- `updated_at` (text): When MSU last updated the figures.
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "character_asset_key": "c_9f1e2d3c4b5a6978",
  "count": 1,
  "found": true,
  "histories": [
    {
      "itemId": 1003797,
      "layerId": 501,
      "layerName": "Zakum",
      "won": true
    }
  ],
  "note": "",
  "raffled_at": "2026-10-08T00:00:00Z",
  "status": "success",
  "updated_at": "2026-10-09T06:00:00Z",
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### Get character raffles

The MapleStory N reward raffles a character is entered in, before the draw, for the wallet that holds it.

**Inputs**

- Character asset key (`character_asset_key`, text, required): The character's asset key, or a character record from an earlier step.
- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.

**Outputs**

- `character_asset_key` (text): The character's asset key.
- `count` (number): How many raffles came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `note` (text): Why nothing was found, or '' when something was.
- `raffles` (list): One record per raffle.
- `status` (text): Status of the action execution ("success" on success).
- `updated_at` (text): When MSU last updated the figures.
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "character_asset_key": "c_9f1e2d3c4b5a6978",
  "count": 1,
  "found": true,
  "note": "",
  "raffles": [
    {
      "layerId": 501,
      "layerName": "Zakum",
      "raffledAt": "2026-10-10T00:00:00Z",
      "tickets": 4
    }
  ],
  "status": "success",
  "updated_at": "2026-10-09T06:00:00Z",
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### Get character V-Matrix

A character's V-Matrix: its matrix points, V-Core shards, and the slots and nodes set in it, by asset key or token ID.

**Inputs**

- Character (`character`, text, required): The character's asset key, or its token ID when Look up by says so, or a character record from an earlier step such as List wallet characters or Explore characters for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.

**Outputs**

- `character_key` (text): The character's key as given.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `lookup` (text): How the key was read: asset_key or token_id.
- `matrix_points` (number): The matrix points the character has to spend.
- `node_count` (number): How many nodes came back.
- `nodes` (list): The V-Matrix nodes.
- `note` (text): Why nothing was found, or '' when something was.
- `slot_count` (number): How many slots came back.
- `slots` (list): The V-Matrix slots.
- `status` (text): Status of the action execution ("success" on success).
- `vcore_shards` (number): How many V-Core shards the character holds.

**Example output**

```json
{
  "character_key": "c_9f1e2d3c4b5a6978",
  "found": true,
  "lookup": "asset_key",
  "matrix_points": 12,
  "node_count": 2,
  "nodes": [
    {
      "level": 25,
      "name": "Angel Ray Boost",
      "nodeId": 50001
    },
    {
      "level": 20,
      "name": "Genesis Boost",
      "nodeId": 50004
    }
  ],
  "note": "",
  "slot_count": 2,
  "slots": [
    {
      "level": 25,
      "nodeId": 50001,
      "slotId": 1
    },
    {
      "level": 20,
      "nodeId": 50004,
      "slotId": 2
    }
  ],
  "status": "success",
  "vcore_shards": 340
}
```

### Get enhancement prices

What enhancing an item costs right now, by level: Star Force and Potential, from the item's id. The prices move with the market.

**Inputs**

- Item ID (`item_id`, number, required): The game's numeric id for the item, such as 1003797, which an NFT item carries as itemId. Every copy of an item shares it. At least 0.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item_id` (number): The item id asked about.
- `note` (text): Why nothing was found, or '' when something was.
- `potential` (object): The Potential prices by level, as MSU records them. Empty when not found.
- `starforce` (object): The Star Force prices by level, as MSU records them. Empty when not found.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "found": true,
  "item_id": 1003797,
  "note": "",
  "potential": {
    "1": {
      "currentPrice": {
        "price": "5000",
        "step": "1"
      }
    }
  },
  "starforce": {
    "1": {
      "currentPrice": {
        "price": "1200",
        "step": "1"
      }
    },
    "2": {
      "currentPrice": {
        "price": "1800",
        "step": "2"
      }
    }
  },
  "status": "success"
}
```

### Get item category

Where an item id sits in MSU's category tree: its category number and label, and the labels of each tier above it.

**Inputs**

- Item ID (`item_id`, number, required): The game's numeric id for the item, such as 1003797, which an NFT item carries as itemId. Every copy of an item shares it. At least 0.

**Outputs**

- `category` (object): The whole category record as MSU sends it, with each tier's label and code. Empty when not found.
- `category_no` (number): The category's number, as the item filters take it.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item_id` (number): The item id asked about.
- `label` (text): The category's label.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).
- `tier_labels` (list): The labels of the category's tiers, broadest first: NFT, FT or Character, then the major, mid and minor classifications.

**Example output**

```json
{
  "category": {
    "categoryNo": 100,
    "label": "Hat",
    "tier0": {
      "code": "nft",
      "label": "NFT"
    },
    "tier1": {
      "code": "equip",
      "label": "Equip"
    },
    "tier2": {
      "code": "armor",
      "label": "Armor"
    },
    "tier3": {
      "code": "hat",
      "label": "Hat"
    }
  },
  "category_no": 100,
  "found": true,
  "item_id": 1003797,
  "label": "Hat",
  "note": "",
  "status": "success",
  "tier_labels": [
    "NFT",
    "Equip",
    "Armor",
    "Hat"
  ]
}
```

### Get item metadata

The game's own data for an item id: its name, stats, requirements and the rest, the same for every copy of the item.

**Inputs**

- Item ID (`item_id`, number, required): The game's numeric id for the item, such as 1003797, which an NFT item carries as itemId. Every copy of an item shares it. At least 0.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item` (object): The item's metadata as MSU records it. Empty when not found.
- `item_id` (number): The item id asked about.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "found": true,
  "item": {
    "categoryNo": 100,
    "description": "A helmet dropped by Zakum.",
    "itemId": 1003797,
    "name": "Zakum Helmet",
    "requiredLevel": 50
  },
  "item_id": 1003797,
  "note": "",
  "status": "success"
}
```

### Get item set

The set an item id belongs to and the effects the set gives.

**Inputs**

- Item ID (`item_id`, number, required): The game's numeric id for the item, such as 1003797, which an NFT item carries as itemId. Every copy of an item shares it. At least 0.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item_id` (number): The item id asked about.
- `item_set` (object): The set as MSU records it: its name, its items and its effects. Empty when not found.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "found": true,
  "item_id": 1003797,
  "item_set": {
    "effects": [
      {
        "count": 2,
        "description": "STR +10"
      }
    ],
    "itemIds": [
      1003797,
      1052013
    ],
    "name": "Zakum Set",
    "setId": 12
  },
  "note": "",
  "status": "success"
}
```

### Get item valuation

What copies of an item traded for over the last 30, 90 or 180 days: the lower and upper average prices and how many trades.

**Inputs**

- Item ID (`item_id`, number, required): The game's numeric id for the item, such as 1003797, which an NFT item carries as itemId. Every copy of an item shares it. At least 0.
- Period (`period`, text): How far back the trades go: 30, 90 (the default) or 180 days. One of: `30` (30 days), `90` (90 days), `180` (180 days). Default: `90`.

**Outputs**

- `average_bottom_price` (number): The lower average price, in NESO.
- `average_top_price` (number): The upper average price, in NESO.
- `date` (text): The date the figures were worked out for.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item_id` (number): The item id asked about.
- `note` (text): Why nothing was found, or '' when something was.
- `period_days` (number): How many days back the trades go.
- `status` (text): Status of the action execution ("success" on success).
- `trade_count` (number): How many trades there were in the period.

**Example output**

```json
{
  "average_bottom_price": 9800,
  "average_top_price": 21000,
  "date": "2026-10-09",
  "found": true,
  "item_id": 1003797,
  "note": "",
  "period_days": 90,
  "status": "success",
  "trade_count": 37
}
```

### Get layer static data

The fixed facts about MapleStory N's reward layers: each field, boss or content's name and level range.

**Inputs**

- Layer IDs (`layer_ids`, list): Optional: the reward layers (fields, bosses or contents) to ask about, by numeric id, one per entry. Get layer static data names them.
- Layer types (`layer_types`, text): Optional: whole kinds of reward layer to ask about, instead of or as well as layer IDs. One or more of: `field` (Fields), `boss` (Bosses), `contents`.

**Outputs**

- `count` (number): How many layers came back.
- `expires_at` (text): When MSU says these facts should be fetched again.
- `layers` (list): One record per layer.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "count": 2,
  "expires_at": "2026-10-10T00:00:00Z",
  "layers": [
    {
      "layerId": 101,
      "layerName": "Henesys Hunting Ground",
      "layerType": "LAYER_TYPE_FIELD",
      "maxLevel": 30,
      "minLevel": 10
    },
    {
      "layerId": 501,
      "layerName": "Zakum",
      "layerType": "LAYER_TYPE_BOSS",
      "maxLevel": 200,
      "minLevel": 50
    }
  ],
  "status": "success"
}
```

### Get NESO balance

How much NESO a wallet holds, on chain and off, and the two added together. NESO is the currency MSU's marketplace trades in.

**Inputs**

- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `note` (text): Why nothing was found, or '' when something was.
- `offchain_neso` (number): The NESO held off chain, in MSU's own ledger.
- `onchain_neso` (number): The NESO held on chain, in the wallet itself.
- `status` (text): Status of the action execution ("success" on success).
- `total_neso` (number): The two balances added together.
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "found": true,
  "note": "",
  "offchain_neso": 15200,
  "onchain_neso": 4300.5,
  "status": "success",
  "total_neso": 19500.5,
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### Get NFT item

One NFT item in full: its stats, Star Force, Potential and the rest of what MSU records, by asset key or token ID.

**Inputs**

- NFT item (`item`, text, required): The NFT item's asset key, or its token ID when Look up by says so, or an item record from an earlier step such as List wallet items or Explore items for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item` (object): The item as MSU records it: stats, enhancement, potential and more. Empty when not found.
- `item_key` (text): The item's key as given.
- `lookup` (text): How the key was read: asset_key or token_id.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "found": true,
  "item": {
    "assetKey": "i_a1b2c3d4e5f60718",
    "categoryNo": 100,
    "itemId": 1003797,
    "mintingNo": 17,
    "name": "Zakum Helmet",
    "potentialGrade": 2,
    "starforce": 12,
    "tokenId": "558201",
    "walletAddress": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
  },
  "item_key": "i_a1b2c3d4e5f60718",
  "lookup": "asset_key",
  "note": "",
  "status": "success"
}
```

### Get quest metadata

The game's own data for a quest id: its name, requirements and rewards.

**Inputs**

- Quest ID (`quest_id`, number, required): The game's numeric id for the quest, as a character's quests carry it. At least 0.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `note` (text): Why nothing was found, or '' when something was.
- `quest` (object): The quest's metadata as MSU records it. Empty when not found.
- `quest_id` (number): The quest id asked about.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "found": true,
  "note": "",
  "quest": {
    "name": "The Zakum Expedition",
    "questId": 2350,
    "requiredLevel": 50,
    "rewardExp": 120000
  },
  "quest_id": 2350,
  "status": "success"
}
```

### Get reward history

What a MapleStory N reward draw gave out in a world, by layer, up to 30 days after the draw.

**Inputs**

- World ID (`world_id`, number, required): The MapleStory N world, by its numeric id (Get server info lists them). At least 0.
- Draw time (`raffled_at`, date and time, required): When the reward draw was held. MSU keeps a draw's history for 30 days after it.
- Layer IDs (`layer_ids`, list): Optional: the reward layers (fields, bosses or contents) to ask about, by numeric id, one per entry. Get layer static data names them.
- Layer types (`layer_types`, text): Optional: whole kinds of reward layer to ask about, instead of or as well as layer IDs. One or more of: `field` (Fields), `boss` (Bosses), `contents`.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `histories` (object): The draw's results by layer, as MSU records them. Empty when not found.
- `note` (text): Why nothing was found, or '' when something was.
- `raffled_at` (text): The draw time asked about, as an ISO 8601 UTC instant.
- `status` (text): Status of the action execution ("success" on success).
- `updated_at` (text): When MSU last updated the figures.
- `world_id` (number): The world asked about.

**Example output**

```json
{
  "found": true,
  "histories": {
    "101": {
      "itemId": 1003797,
      "layerName": "Henesys Hunting Ground",
      "winners": 3
    }
  },
  "note": "",
  "raffled_at": "2026-10-08T00:00:00Z",
  "status": "success",
  "updated_at": "2026-10-09T06:00:00Z",
  "world_id": 1
}
```

### Get reward information

MapleStory N's NFT drop rates and what is left to drop in a world, by field, boss or content layer.

**Inputs**

- World ID (`world_id`, number, required): The MapleStory N world, by its numeric id (Get server info lists them). At least 0.
- Layer IDs (`layer_ids`, list): Optional: the reward layers (fields, bosses or contents) to ask about, by numeric id, one per entry. Get layer static data names them.
- Layer types (`layer_types`, text): Optional: whole kinds of reward layer to ask about, instead of or as well as layer IDs. One or more of: `field` (Fields), `boss` (Bosses), `contents`.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `note` (text): Why nothing was found, or '' when something was.
- `rewards` (object): The reward information by layer, as MSU records it: drop rates and stock. Empty when not found.
- `status` (text): Status of the action execution ("success" on success).
- `updated_at` (text): When MSU last updated the figures.
- `world_id` (number): The world asked about.

**Example output**

```json
{
  "found": true,
  "note": "",
  "rewards": {
    "101": {
      "dropRate": 0.015,
      "layerName": "Henesys Hunting Ground",
      "remaining": 42
    }
  },
  "status": "success",
  "updated_at": "2026-10-09T06:00:00Z",
  "world_id": 1
}
```

### Get server info

MapleStory N's reward servers: each world's id, name and state, for the worlds asked about or all of them.

**Inputs**

- World IDs (`world_ids`, list): Optional: only these worlds, by numeric id, one per entry.

**Outputs**

- `count` (number): How many worlds came back.
- `servers` (list): One record per world.
- `status` (text): Status of the action execution ("success" on success).
- `world_ids` (list): The world ids asked about; empty for all.

**Example output**

```json
{
  "count": 2,
  "servers": [
    {
      "serverState": "SERVER_STATE_OPEN",
      "worldId": 1,
      "worldName": "Henesys"
    },
    {
      "serverState": "SERVER_STATE_OPEN",
      "worldId": 2,
      "worldName": "Orbis"
    }
  ],
  "status": "success",
  "world_ids": []
}
```

### Get skill metadata

The game's own data for a skill id, at a given level if wanted.

**Inputs**

- Skill ID (`skill_id`, number, required): The game's numeric id for the skill, as a character's skills carry it. At least 0.
- Level (`level`, number): Optional: the skill level to describe. At least 0.

**Outputs**

- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `level` (number): The level asked about, or null for none.
- `note` (text): Why nothing was found, or '' when something was.
- `skill` (object): The skill's metadata as MSU records it. Empty when not found.
- `skill_id` (number): The skill id asked about.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "found": true,
  "level": 30,
  "note": "",
  "skill": {
    "description": "Fires a ray of holy light.",
    "maxLevel": 30,
    "name": "Angel Ray",
    "skillId": 2321007
  },
  "skill_id": 2321007,
  "status": "success"
}
```

### Get V-Matrix node

A V-Matrix node's name, description, picture and the skills it holds, at a given level if wanted.

**Inputs**

- Node ID (`node_id`, number, required): The V-Matrix node's numeric id, as a character's V-Matrix carries it. At least 0.
- Level (`level`, number): Optional: the node level to describe. At least 0.
- Skill IDs (`skill_ids`, list): Optional: only these skills of the node, by id, one per entry.

**Outputs**

- `count` (number): How many skills came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `node_description` (text): What the node does.
- `node_id` (number): The node's id.
- `node_image_url` (text): A link to the node's picture.
- `node_level` (number): The level described, or null when MSU gave none.
- `node_name` (text): The node's name.
- `note` (text): Why nothing was found, or '' when something was.
- `skills` (list): The skills the node holds.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "count": 1,
  "found": true,
  "node_description": "Boosts Angel Ray.",
  "node_id": 50001,
  "node_image_url": "https://cdn.msu.io/vmatrix/50001.png",
  "node_level": 25,
  "node_name": "Angel Ray Boost",
  "note": "",
  "skills": [
    {
      "level": 25,
      "name": "Angel Ray",
      "skillId": 2321007
    }
  ],
  "status": "success"
}
```

### List character history missions

A character's history missions, the record of what it has done (levels, job advancements, bosses, minting and more), twenty a page, filtered by category if wanted.

**Inputs**

- Character (`character`, text, required): The character's asset key, or its token ID when Look up by says so, or a character record from an earlier step such as List wallet characters or Explore characters for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.
- Category (`main_category`, text): Optional: only missions of one kind. One of: `character`, `item`, `adventure`, `battle`, `blockchain`, `social`.
- Sub-category (`sub_category`, text): Optional: only missions of one narrower kind. One of: `character_level` (Character: level), `character_job_advancement` (Character: job advancement), `character_ability` (Character: ability), `item_reward` (Item: reward), `item_star_force` (Item: Star Force), `item_potential` (Item: Potential), `item_bonus_stat` (Item: bonus stat), `adventure_regional_quest` (Adventure: regional quest), `adventure_party_quest` (Adventure: party quest), `battle_field` (Battle: field), and 4 more.
- Cursor (`cursor`, text): Optional: the next_cursor from the previous page of this step, to get the page after it. Leave empty for the first page.

**Outputs**

- `character_key` (text): The character's key as given.
- `count` (number): How many history missions came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `has_more` (true/false): True when there is another page of history missions.
- `history_missions` (list): The history missions, as MSU records them.
- `lookup` (text): How the key was read: asset_key or token_id.
- `main_category` (text): The category filtered by, as MSU spells it, or ''.
- `next_cursor` (text): The cursor for the next page of history missions, to give this step as Cursor; '' on the last page.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).
- `sub_category` (text): The sub-category filtered by, as MSU spells it, or ''.

**Example output**

```json
{
  "character_key": "c_9f1e2d3c4b5a6978",
  "count": 2,
  "found": true,
  "has_more": false,
  "history_missions": [
    {
      "achievedAt": "2026-09-30T12:00:00Z",
      "missionId": 7001,
      "name": "Defeated Zakum"
    },
    {
      "achievedAt": "2026-10-02T18:30:00Z",
      "missionId": 7002,
      "name": "Defeated Horntail"
    }
  ],
  "lookup": "asset_key",
  "main_category": "HISTORY_MISSION_MAIN_CATEGORY_BATTLE",
  "next_cursor": "",
  "note": "",
  "status": "success",
  "sub_category": ""
}
```

### List character items

The items in a character's inventory, twenty a page, by asset key or token ID, filtered by category if wanted.

**Inputs**

- Character (`character`, text, required): The character's asset key, or its token ID when Look up by says so, or a character record from an earlier step such as List wallet characters or Explore characters for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.
- Category number (`category_no`, number): Optional: only items in one of MSU's item categories, by its number (Get item category gives an item's). Leave empty for every category. At least 0.
- Cursor (`cursor`, text): Optional: the next_cursor from the previous page of this step, to get the page after it. Leave empty for the first page.

**Outputs**

- `character_key` (text): The character's key as given.
- `count` (number): How many items came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `has_more` (true/false): True when there is another page of items.
- `items` (list): The items on this page.
- `lookup` (text): How the key was read: asset_key or token_id.
- `next_cursor` (text): The cursor for the next page of items, to give this step as Cursor; '' on the last page.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "character_key": "c_9f1e2d3c4b5a6978",
  "count": 2,
  "found": true,
  "has_more": true,
  "items": [
    {
      "assetKey": "i_a1b2c3d4e5f60718",
      "categoryNo": 100,
      "itemId": 1003797,
      "mintingNo": 17,
      "name": "Zakum Helmet",
      "potentialGrade": 2,
      "starforce": 12,
      "tokenId": "558201"
    },
    {
      "assetKey": "i_0f9e8d7c6b5a4932",
      "categoryNo": 107,
      "itemId": 1072344,
      "mintingNo": 3,
      "name": "Facestompers",
      "potentialGrade": 1,
      "starforce": 8,
      "tokenId": "558244"
    }
  ],
  "lookup": "asset_key",
  "next_cursor": "eyJvZmZzZXQiOjIwfQ",
  "note": "",
  "status": "success"
}
```

### List character quests

A character's quests and how far it has got with each, by asset key or token ID.

**Inputs**

- Character (`character`, text, required): The character's asset key, or its token ID when Look up by says so, or a character record from an earlier step such as List wallet characters or Explore characters for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.

**Outputs**

- `character_key` (text): The character's key as given.
- `count` (number): How many quests came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `lookup` (text): How the key was read: asset_key or token_id.
- `note` (text): Why nothing was found, or '' when something was.
- `quests` (list): The quests, one record each.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "character_key": "c_9f1e2d3c4b5a6978",
  "count": 2,
  "found": true,
  "lookup": "asset_key",
  "note": "",
  "quests": [
    {
      "name": "Welcome to Maple World",
      "questId": 1000,
      "status": "COMPLETED"
    },
    {
      "name": "The Zakum Expedition",
      "questId": 2350,
      "status": "IN_PROGRESS"
    }
  ],
  "status": "success"
}
```

### List character skills

A character's skills, or its hyper skills, with each one's level, by asset key or token ID.

**Inputs**

- Character (`character`, text, required): The character's asset key, or its token ID when Look up by says so, or a character record from an earlier step such as List wallet characters or Explore characters for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.
- Skills (`skill_type`, text): The ordinary skills (the default) or the hyper skills. One of: `skills`, `hyper` (Hyper skills). Default: `skills`.

**Outputs**

- `character_key` (text): The character's key as given.
- `count` (number): How many skills came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `lookup` (text): How the key was read: asset_key or token_id.
- `note` (text): Why nothing was found, or '' when something was.
- `skill_type` (text): What was listed: skills or hyper.
- `skills` (list): The skills, one record each.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "character_key": "c_9f1e2d3c4b5a6978",
  "count": 2,
  "found": true,
  "lookup": "asset_key",
  "note": "",
  "skill_type": "skills",
  "skills": [
    {
      "level": 30,
      "name": "Angel Ray",
      "skillId": 2321007
    },
    {
      "level": 30,
      "name": "Genesis",
      "skillId": 2321003
    }
  ],
  "status": "success"
}
```

### List exclusive items

The items that cannot be equipped at the same time as a given item id.

**Inputs**

- Item ID (`item_id`, number, required): The game's numeric id for the item, such as 1003797, which an NFT item carries as itemId. Every copy of an item shares it. At least 0.

**Outputs**

- `count` (number): How many items came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `item_id` (number): The item id asked about.
- `items` (list): The items that cannot be worn with it.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "count": 2,
  "found": true,
  "item_id": 1003797,
  "items": [
    {
      "itemId": 1004422,
      "name": "Royal Von Leon Helmet"
    },
    {
      "itemId": 1003976,
      "name": "Chaos Zakum Helmet"
    }
  ],
  "note": "",
  "status": "success"
}
```

### List NFT item history missions

An NFT item's history missions, the record of what has been done with it, twenty a page: all of them, or only the representative ones MSU picks out.

**Inputs**

- NFT item (`item`, text, required): The NFT item's asset key, or its token ID when Look up by says so, or an item record from an earlier step such as List wallet items or Explore items for sale.
- Look up by (`lookup`, text): Whether the key given is MSU's asset key (the default, which every character and item has) or the NFT's token ID, issued once it is minted. An unminted character or item is not found by token ID. One of: `asset_key` (Asset key), `token_id` (Token ID). Default: `asset_key`.
- Representative only (`representative_only`, true/false): Only the representative missions, the few MSU shows on the item's page, instead of all of them. Default: `false`.
- Cursor (`cursor`, text): Optional: the next_cursor from the previous page of this step, to get the page after it. Leave empty for the first page.

**Outputs**

- `count` (number): How many history missions came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `has_more` (true/false): True when there is another page of history missions.
- `history_missions` (list): The history missions, as MSU records them.
- `item_key` (text): The item's key as given.
- `lookup` (text): How the key was read: asset_key or token_id.
- `next_cursor` (text): The cursor for the next page of history missions, to give this step as Cursor; '' on the last page.
- `note` (text): Why nothing was found, or '' when something was.
- `representative_only` (true/false): True when only the representative missions were listed.
- `status` (text): Status of the action execution ("success" on success).

**Example output**

```json
{
  "count": 1,
  "found": true,
  "has_more": false,
  "history_missions": [
    {
      "achievedAt": "2026-09-12T09:00:00Z",
      "missionId": 8101,
      "name": "Enhanced to 12 stars"
    }
  ],
  "item_key": "i_a1b2c3d4e5f60718",
  "lookup": "asset_key",
  "next_cursor": "",
  "note": "",
  "representative_only": false,
  "status": "success"
}
```

### List wallet characters

The characters linked to a wallet, a page at a time, filtered by name or whether they can be traded.

**Inputs**

- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.
- Tradable (`tradable`, true/false): Optional: only characters that can be traded (true), only ones that cannot (false), or both when left empty.
- Name (`name`, text): Optional: only characters whose name matches.
- Cursor (`cursor`, text): Optional: the next_cursor from the previous page of this step, to get the page after it. Leave empty for the first page.
- Page size (`size`, number): How many characters a page holds, 1 to 100. MSU's default is 10. From 1 to 100.

**Outputs**

- `characters` (list): The characters on this page.
- `count` (number): How many characters came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `has_more` (true/false): True when there is another page of characters.
- `next_cursor` (text): The cursor for the next page of characters, to give this step as Cursor; '' on the last page.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "characters": [
    {
      "assetKey": "c_9f1e2d3c4b5a6978",
      "class": "magician",
      "isTradable": true,
      "job": "bishop",
      "level": 215,
      "name": "Mapler",
      "tokenId": "128934",
      "worldId": 1
    },
    {
      "assetKey": "c_1a2b3c4d5e6f7081",
      "class": "thief",
      "isTradable": false,
      "job": "night_walker",
      "level": 180,
      "name": "Orbis",
      "tokenId": "128951",
      "worldId": 1
    }
  ],
  "count": 2,
  "found": true,
  "has_more": false,
  "next_cursor": "",
  "note": "",
  "status": "success",
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### List wallet collections

The NFT collections a wallet holds, a page at a time. Give the last_key of one page to get the next.

**Inputs**

- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.
- Page size (`page_size`, number): How many collections a page holds, 1 to 200. MSU's default is 10. From 1 to 200.
- Last key (`last_key`, text): Optional: the last_key from the previous page of this step, to get the page after it. Leave empty for the first.

**Outputs**

- `collection` (list): The collections on this page.
- `count` (number): How many collections came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `is_last_page` (true/false): True when there is no page after this one.
- `last_key` (text): The key for the next page, to give this step as Last key; '' on the last page.
- `note` (text): Why nothing was found, or '' when something was.
- `page_size` (number): How many a page holds.
- `status` (text): Status of the action execution ("success" on success).
- `total_count` (number): How many collections the wallet holds in all.
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "collection": [
    {
      "contractAddress": "0xabc1",
      "itemCount": 3,
      "name": "MapleStory N Characters"
    },
    {
      "contractAddress": "0xabc2",
      "itemCount": 41,
      "name": "MapleStory N Items"
    }
  ],
  "count": 2,
  "found": true,
  "is_last_page": true,
  "last_key": "",
  "note": "",
  "page_size": 10,
  "status": "success",
  "total_count": 2,
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### List wallet currencies

The in-game currencies linked to a wallet and the balance of each, as MSU defines them.

**Inputs**

- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.

**Outputs**

- `count` (number): How many currencies came back.
- `currencies` (list): The currencies, one record each.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "count": 2,
  "currencies": [
    {
      "balance": "2500000",
      "currencyType": "MESO"
    },
    {
      "balance": "1200",
      "currencyType": "MAPLE_POINT"
    }
  ],
  "found": true,
  "note": "",
  "status": "success",
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### List wallet items

The items a wallet holds, a page at a time, filtered by category, whether they are up for sale, name or token ID.

**Inputs**

- Wallet address (`wallet_address`, text, required): The player's wallet address: 0x followed by forty hex digits, as shown on their MSU profile, or a record from an earlier step that carries one.
- Category number (`category_no`, number): Optional: only items in one of MSU's item categories, by its number (Get item category gives an item's). Leave empty for every category. At least 0.
- For sale (`on_sale`, true/false): Optional: only items listed for sale (true), only ones that are not (false), or both when left empty.
- Token name (`token_name`, text): Optional: only items whose token name matches.
- Token ID (`token_id`, text): Optional: only the item with this token ID.
- Cursor (`cursor`, text): Optional: the next_cursor from the previous page of this step, to get the page after it. Leave empty for the first page.
- Page size (`size`, number): How many items a page holds, 1 to 200. MSU's default is 10. From 1 to 200.

**Outputs**

- `count` (number): How many items came back.
- `found` (true/false): True when MapleStory Universe knows what was asked for; false when it does not, in which case the rest of the answer is empty.
- `has_more` (true/false): True when there is another page of items.
- `items` (list): The items on this page.
- `next_cursor` (text): The cursor for the next page of items, to give this step as Cursor; '' on the last page.
- `note` (text): Why nothing was found, or '' when something was.
- `status` (text): Status of the action execution ("success" on success).
- `wallet_address` (text): The wallet address asked about.

**Example output**

```json
{
  "count": 2,
  "found": true,
  "has_more": true,
  "items": [
    {
      "assetKey": "i_a1b2c3d4e5f60718",
      "categoryNo": 100,
      "itemId": 1003797,
      "mintingNo": 17,
      "name": "Zakum Helmet",
      "potentialGrade": 2,
      "starforce": 12,
      "tokenId": "558201"
    },
    {
      "assetKey": "i_0f9e8d7c6b5a4932",
      "categoryNo": 107,
      "itemId": 1072344,
      "mintingNo": 3,
      "name": "Facestompers",
      "potentialGrade": 1,
      "starforce": 8,
      "tokenId": "558244"
    }
  ],
  "next_cursor": "eyJvZmZzZXQiOjIwfQ",
  "note": "",
  "status": "success",
  "wallet_address": "0x7f3c1b2a9d8e4f5061728394a5b6c7d8e9f01234"
}
```

### Suggest keywords

Autocomplete suggestions for a marketplace search: the item, character or user names that start like a keyword of two characters or more.

**Inputs**

- Keyword (`keyword`, text, required): The start of a name, at least two characters; case does not matter.
- Suggest (`suggestion_type`, text): What kind of name to suggest. One of: `item` (Items), `character` (Characters), `user` (Users). Default: `item`.
- Token type (`token_type`, text): Only NFTs, only fungible tokens, or all (the default). One of: `all`, `nft`, `ft`. Default: `all`.
- How many (`size`, number): Optional: at most this many suggestions. At least 1.

**Outputs**

- `count` (number): How many suggestions came back.
- `keyword` (text): The keyword asked about.
- `status` (text): Status of the action execution ("success" on success).
- `suggestion_type` (text): What was suggested: item, character or user.
- `suggestions` (list): The suggestions, best first.
- `token_type` (text): The token type filtered by: all, nft or ft.

**Example output**

```json
{
  "count": 2,
  "keyword": "zak",
  "status": "success",
  "suggestion_type": "item",
  "suggestions": [
    {
      "itemId": 1003797,
      "keyword": "Zakum Helmet"
    },
    {
      "itemId": 4001017,
      "keyword": "Zakum Tree Branch"
    }
  ],
  "token_type": "all"
}
```
