Skip to main content

Most Used Commands

Create a new fungible token with treasury and admin key set to alias Alice
Token associate
Transfer fungible tokens
Create an NFT collection, mint one serial, transfer it

Full Command Reference

The token plugin includes many subcommands (NFTs, airdrops, mint, burn, freeze, and more). The sections below cover common FT and NFT flows. For the full command list and flags, run hcli token --help, then hcli token with your subcommand and --help. For repeatable creation from JSON, use token create-ft-from-file or token create-nft-from-file and the guide below.
Create a new fungible token with specified properties.
string
required
Fungible token name.
string
required
Fungible token symbol.
string
Treasury account: {accountId}:{privateKey} pair, key reference, or account alias. Defaults to the operator.
int
default:"0"
Decimals for the fungible token. Default: 0.
string
Initial supply amount. Default: 1000000 in display units (with decimals applied). Append t for raw base units (e.g., 1000t).
string
default:"INFINITE"
Supply type: INFINITE (default) or FINITE.
string
Maximum supply at creation (display units, or append t for raw base units). Use with FINITE supply type.
string (repeatable)
Optional admin key. Can be {accountId}:{privateKey} pair, private key in {ed25519|ecdsa}:private:{private-key} format, key reference, or account alias. Omit for a token without an admin key.
int
M-of-N: number of admin keys required to sign (only when multiple --admin-key values are set).
string (repeatable)
Supply key(s). Same key formats as other repeatable token keys.
int
M-of-N for supply keys (only when multiple --supply-key values are set).
string (repeatable)
Optional freeze key(s).
int
M-of-N for freeze keys (only when multiple --freeze-key values are set).
boolean
default:"false"
When true and a freeze key is set, new token associations are frozen by default. Ignored without a freeze key (a warning is logged).
string (repeatable)
Optional wipe key(s).
int
M-of-N for wipe keys (only when multiple --wipe-key values are set).
string (repeatable)
Optional KYC key(s).
int
M-of-N for KYC keys (only when multiple --kyc-key values are set).
string (repeatable)
Optional pause key(s).
int
M-of-N for pause keys (only when multiple --pause-key values are set).
string (repeatable)
Optional fee schedule key(s).
int
M-of-N for fee schedule keys (only when multiple --fee-schedule-key values are set).
string (repeatable)
Optional metadata key(s).
int
M-of-N for metadata keys (only when multiple --metadata-key values are set).
string
Optional name to register for the fungible token (local alias).
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
string
Optional memo for the fungible token (max 100 characters).
string
Auto-renew period: seconds as integer, or with suffix s/m/h/d (e.g. 500, 500s, 50m, 2h, 1d). Requires --auto-renew-account.
string
Account that pays auto-renewal (account id, alias, or key reference). Required when --auto-renew-period is set.
string
Absolute token expiration as ISO 8601 datetime. Ignored when --auto-renew-period and --auto-renew-account are set.
Example
Create a new non-fungible token (NFT collection). Use token mint-nft after creation to mint serials. See hcli token create-nft --help for all key types and thresholds.
string
required
Token name.
string
required
Token symbol.
string
Treasury account. Defaults to the operator.
string
default:"INFINITE"
INFINITE or FINITE. With FINITE, set --max-supply.
string
Max supply (display units, or append t for base units). Required when supply type is FINITE.
string (repeatable)
Admin key(s). Defaults to operator key when omitted (see CLI help).
string (repeatable)
Supply key(s) for minting NFT serials.
string
Optional local alias for the token.
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
Example
Create a new fungible token from a JSON file definition with advanced features. See the full guide below.
Example: hcli token create-ft-from-file --file ~/projects/token.json
string
required
Fungible token definition file path (absolute or relative) to a JSON file.
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
Example
Create a new NFT collection from a JSON definition. Schema matches the NFT file format in the guide.
string
required
NFT token definition file path (absolute or relative) to a JSON file.
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
Example
Associate a token with an account to enable transfers.
string
required
Token: either a token alias or token-id
string
required
Account to associate: {accountId}:{privateKey} pair, key reference, or account alias.
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
ExamplesFungible or NFT token alias:
Mint a new NFT serial on an existing collection. Metadata must be at most 100 bytes.
string
required
NFT token: alias or token ID.
string
required
NFT metadata string (max 100 bytes), often a URI or short label.
string (repeatable)
Supply key credential(s). Omit when the CLI can resolve signing keys from the key manager.
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
Example
Transfer a fungible token from one account to another.
string
required
Fungible token: either a token alias or token-id.
string
required
Destination account: account ID or alias.
string
Account to transfer from: {accountId}:{privateKey} pair, key reference, or account alias. Defaults to the operator.
string
required
Amount to transfer. Default: display units (with decimals applied). Append t for raw base units (e.g., 100t).
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
Example
Transfer one or more NFT serials to another account.
string
required
NFT token: alias or token ID.
string
required
Destination account ID or alias.
string
Source account. Defaults to the operator.
string
required
Comma-separated serial numbers (e.g. 1,2,3).
string(local|local_encrypted)
Key manager to use: local or local_encrypted (defaults to config setting).
Example
List all tokens (FT and NFT) stored in state for all networks.
boolean
Show token key information (admin, supply, wipe, etc.).
Example

Guide: Token Create From File (Specification)

Create a token by defining its configuration in a JSON file. This is the recommended approach for repeatable token creation (scripts, CI, team handoffs), and it supports aliases for token keys so you don’t have to hardcode account keys everywhere.

What it does

  • token create-ft-from-file reads a JSON file that matches the fungible schema and creates an FT on the selected network.
  • token create-nft-from-file reads a JSON file that matches the NFT schema and creates an NFT collection on the selected network.

Fungible token (FT) file

You can define:
  • token metadata (name, symbol, decimals, memo)
  • supply model (finite/infinite, initial/max supply)
  • token keys (admin, supply, wipe, kyc, freeze, pause, feeSchedule)
  • optional token associations
  • optional custom fees

Quickstart (FT)

Create a token.json file and add a JSON specification. Here’s a basic example that both uses the full key format for the treasuryKey and the alias format for the adminKey.
You can create a token from this specification by running the following command: hcli token create-ft-from-file --file ./token.json

Full breakdown (FT)

Here’s a full breakdown of all the options you can use:

NFT definition file quickstart

NFT JSON files use a different schema than FT files. There is no decimals or initialSupply. You must provide at least one adminKey and one supplyKey (each can be a single string or an array of key strings). For supplyType finite, set maxSupply. For infinite, do not include maxSupply. Example token-nft.json:
Create the collection on the selected network:
Optional fields include the same families of keys and thresholds as in code (wipeKey, freezeKey, pauseKey, feeScheduleKey, associations, and their threshold fields). For exact validation rules, rely on the CLI error output or the schema in the Hiero CLI repository (NonFungibleTokenFileSchema).