Skip to main content

JQ721 Config

The jq721 configuration is used to deploy and manage NFT collections. Each collection is defined by a config.json file inside your project directory.

To generate a config template, use:

$ joystiq init project <name> 
  • <name>: The name of the nft collection.

Sample config.json

{
"collection_name": "test",
"collection_description": "description",
"collection_media_url": "https://arweave.net/...",
"supply": "4444",
"fixed_metadata": false,
"royalty_percent": "5",
"royalty_wallet": "0x...",
"is_immutable": false,
"start_order": "1",
"groups": [
{
"name": "public",
"merkle_root": null,
"max_mints_per_wallet": "0",
"reserved_supply": "0",
"payments": [
{
"coin": "0x2::sui::SUI",
"routes": [
{
"method": "transfer",
"amount": "100001",
"destination": "0x..."
}
]
}
],
"start_time": "2025-07-09T06:03:42Z",
"end_time": null
},
{
"name": "free",
"merkle_root": null,
"max_mints_per_wallet": "0",
"reserved_supply": "0",
"payments": [],
"start_time": "2025-07-09T06:03:42Z",
"end_time": null
}
]
}

Field Descriptions

Collection Fields

  • collection_name: Name of the collection
  • collection_description: Description for the collection
  • collection_media_url: Image URL shown on collection detail
  • supply: Total number of NFTs that can be minted
  • fixed_metadata: Set to false for dynamic metadata, or provide fixed metadata object
    • name: Name of the NFT
    • description: Description of the NFT
    • image: URL for the NFT image
    • attributes: Optional array of attributes for the NFT. Leave empty for no attributes.
      • Each attribute is an object with:
      • key: Attribute key (e.g. "color")
      • value: Attribute value (e.g. "red")
    • name_format: Optional format string for NFT names (e.g. "My custom NFT {name} - {token_id}")
  • royalty_percent: Percent of royalties taken per trade (e.g. "5" = 5%)
  • royalty_wallet: Wallet to receive royalties
  • is_immutable: If true, collection cannot be updated later
  • start_order: Starting token ID (usually 0 or 1)

Mint Group Fields

groups is an array defining public and/or allowlisted mint phases. Each group supports:

  • name: Name of the mint group (e.g. "public", "presale")
  • merkle_root: If set, restricts group to allowlisted wallets
  • max_mints_per_wallet: Per-wallet mint cap (0 = unlimited)
  • reserved_supply: Optional max supply allocated to this group
  • payments: List of accepted payment options (can be empty for free mints)
  • start_time: Start time in ISO format
  • end_time: Optional end time in ISO format

Payment Fields

Each mint group can include one or more payment objects. Each payment supports:

  • coin: Coin type (e.g. 0x2::sui::SUI)
  • routes: Where the funds go - supports:
    • method: Currently only transfer is supported
    • amount: Amount in smallest unit (e.g. 1000000 for 1 SUI)
    • destination: Wallet address to receive the funds (or null for burn)

You may provide up to 2 payment methods per group and each method can have multiple routes.


Notes

  • All payments are denominated in SUI or custom coins (0x...::...::COIN)
  • Free mints are valid (leave payments as an empty array)
  • Fixed metadata support is optional
  • Collections with is_immutable: true cannot be updated after deployment