The iota client command provides all functionality for interacting with the IOTA network.
Basic Usage
iota client [OPTIONS] [SUBCOMMAND]
Global Options
--client.config <PATH> - Custom config file path
--client.env <ENV> - Network environment to use
--json - Output results in JSON format
--yes - Accept defaults without prompting
Address Management
active-address
Display the active address:
iota client active-address
Output:
0x1234567890abcdef1234567890abcdef12345678
addresses
List all addresses in keystore:
iota client addresses [--sort-by-alias]
Options:
-s, --sort-by-alias - Sort by alias instead of address
Output:
╭────────────────────────────────────────────────────────────────────╮
│ Active Address │
│ 0x1234...5678 │
├────────┬────────────────────────────────────────────┬──────────────┤
│ Alias │ Address │ Source │
├────────┼────────────────────────────────────────────┼──────────────┤
│ alice │ 0x1234...5678 │ keypair │
│ bob │ 0xabcd...ef01 │ keypair │
╰────────┴────────────────────────────────────────────┴──────────────╯
new-address
Generate a new address:
iota client new-address [OPTIONS] <KEY_SCHEME>
Arguments:
<KEY_SCHEME> - Signature scheme: ed25519, secp256k1, or secp256r1
Options:
--alias <ALIAS> - Set an alias for the address
--word-length <LENGTH> - Mnemonic length: word12, word15, word18, word21, word24
--derivation-path <PATH> - Custom derivation path
Example:
iota client new-address ed25519 --alias my-wallet
Output:
Created new keypair for address with scheme ED25519
Secret Recovery Phrase: [word1 word2 ... word12]
Address: 0x1234567890abcdef1234567890abcdef12345678
Save your secret recovery phrase securely. It cannot be recovered if lost.
add-account
Add an existing account address (not backed by a private key):
iota client add-account <ADDRESS> [--alias <ALIAS>]
This is useful for monitoring accounts you don’t control.
remove-address
Remove an address from keystore:
iota client remove-address <ADDRESS_OR_ALIAS>
This permanently removes the private key. Ensure you have a backup.
switch
Switch active address or environment:
iota client switch [--address <ADDRESS>] [--env <ENV>]
Examples:
# Switch active address
iota client switch --address alice
# Switch network
iota client switch --env testnet
# Switch both
iota client switch --address alice --env devnet
Environment Management
active-env
Display the active environment:
envs
List all configured environments:
Output:
╭─────────┬────────────────────────────────────╮
│ Alias │ RPC URL │
├─────────┼────────────────────────────────────┤
│ devnet │ https://api.devnet.iota.cafe:443 │
│ testnet │ https://api.testnet.iota.cafe:443 │
│ localnet│ http://127.0.0.1:9000 │
╰─────────┴────────────────────────────────────╯
new-env
Add a new environment:
iota client new-env [OPTIONS] --alias <ALIAS> --rpc <URL>
Options:
--alias <ALIAS> - Environment name
--rpc <URL> - RPC endpoint URL
--ws <URL> - WebSocket URL (optional)
--graphql <URL> - GraphQL endpoint (optional)
--faucet <URL> - Faucet URL (optional)
--basic-auth <USER:PASS> - HTTP basic auth (optional)
Example:
iota client new-env \
--alias custom \
--rpc https://rpc.example.com \
--ws wss://ws.example.com
Querying Data
balance
Check coin balance:
iota client balance [ADDRESS] [OPTIONS]
Options:
--coin-type <TYPE> - Filter by coin type (e.g., 0x2::iota::IOTA)
--with-coins - Show individual coin objects
Examples:
# Check active address balance
iota client balance
# Check specific address
iota client balance 0x1234...
# Check with coin details
iota client balance --with-coins
Output:
╭─────────────────────────────────────────────────────────────╮
│ Balance │
├─────────────────────────────┬───────────────────────────────┤
│ Coin │ Balance │
├─────────────────────────────┼───────────────────────────────┤
│ 0x2::iota::IOTA │ 1000000000000 (1,000 IOTA) │
╰─────────────────────────────┴───────────────────────────────╯
gas
List gas objects:
iota client gas [ADDRESS]
Output:
╭───────────────────────────────┬──────────┬──────────────────╮
│ Object ID │ Version │ Balance (NANO) │
├───────────────────────────────┼──────────┼──────────────────┤
│ 0xabc...123 │ 5 │ 500000000000 │
│ 0xdef...456 │ 3 │ 500000000000 │
╰───────────────────────────────┴──────────┴──────────────────╯
object
Fetch object details:
iota client object <OBJECT_ID> [--bcs]
Options:
--bcs - Output BCS-serialized object
Example:
iota client object 0xabc123...
objects
List all objects owned by an address:
iota client objects [ADDRESS]
Example:
iota client objects
iota client objects 0x1234...
dynamic-field
Query dynamic fields of an object:
iota client dynamic-field <OBJECT_ID> [OPTIONS]
Options:
--cursor <ID> - Pagination cursor
--limit <NUM> - Max items per page (default: 50)
Example:
iota client dynamic-field 0xabc123... --limit 10
tx-block
Get transaction details:
iota client tx-block <DIGEST>
Example:
iota client tx-block 5KzKVq7qP2xH8FwkQJqxhPNBjkFVjM3xZoJpP5KwqAkH
chain-identifier
Query the chain identifier:
iota client chain-identifier
Output:
Chain identifier: 2a:4c:c5:0b:8f:69:a8:5e:...
Transactions
call
Call a Move function:
iota client call [OPTIONS]
Required options:
--package <ID> - Package object ID
--module <NAME> - Module name
--function <NAME> - Function name
Optional:
--type-args <TYPE>... - Type arguments
--args <ARG>... - Function arguments
--gas <ID>... - Gas payment objects
--gas-budget <AMOUNT> - Gas budget in NANOs
Example:
iota client call \
--package 0x2 \
--module coin \
--function transfer \
--type-args 0x2::iota::IOTA \
--args 0xabc123 0xdef456 1000000000 \
--gas-budget 10000000
transfer
Transfer an object:
iota client transfer [OPTIONS]
Options:
--to <ADDRESS> - Recipient address or alias
--object-id <ID> - Object to transfer
--gas <ID>... - Gas payment
--gas-budget <AMOUNT> - Gas budget
Example:
iota client transfer \
--to bob \
--object-id 0xabc123... \
--gas-budget 5000000
split-coin
Split a coin into multiple coins:
iota client split-coin [OPTIONS]
Options:
--coin-id <ID> - Coin to split
--amounts <AMOUNT>... - Split amounts (mutually exclusive with --count)
--count <N> - Number of equal splits (mutually exclusive with --amounts)
--gas <ID>... - Gas payment
--gas-budget <AMOUNT> - Gas budget
Examples:
# Split by specific amounts
iota client split-coin \
--coin-id 0xabc... \
--amounts 1000 2000 5000 \
--gas-budget 5000000
# Split into equal parts
iota client split-coin \
--coin-id 0xabc... \
--count 5 \
--gas-budget 5000000
merge-coin
Merge two coins:
iota client merge-coin [OPTIONS]
Options:
--primary-coin <ID> - Coin to merge into
--coin-to-merge <ID> - Coin to be merged
--gas <ID>... - Gas payment
--gas-budget <AMOUNT> - Gas budget
Example:
iota client merge-coin \
--primary-coin 0xabc... \
--coin-to-merge 0xdef... \
--gas-budget 5000000
pay
Pay coins to recipients:
iota client pay [OPTIONS]
Options:
--input-coins <ID>... - Input coins
--recipients <ADDRESS>... - Recipient addresses
--amounts <AMOUNT>... - Amounts to pay (must match recipients)
--gas <ID>... - Gas payment
--gas-budget <AMOUNT> - Gas budget
Example:
iota client pay \
--input-coins 0xabc... 0xdef... \
--recipients alice bob \
--amounts 1000 2000 \
--gas-budget 10000000
pay-iota
Pay IOTA coins (gas coin can be used as input):
iota client pay-iota [OPTIONS]
Options:
--input-coins <ID>... - Input IOTA coins (optional, auto-selected if not provided)
--recipients <ADDRESS>... - Recipient addresses
--amounts <AMOUNT>... - Amounts to pay
--gas-budget <AMOUNT> - Gas budget
Example:
iota client pay-iota \
--recipients alice bob \
--amounts 1000000000 2000000000 \
--gas-budget 10000000
pay-all-iota
Pay all IOTA (minus gas) to a recipient:
iota client pay-all-iota [OPTIONS]
Options:
--input-coins <ID>... - Input IOTA coins (includes gas)
--recipient <ADDRESS> - Recipient address
--gas-budget <AMOUNT> - Gas budget
Example:
iota client pay-all-iota \
--input-coins 0xabc... 0xdef... \
--recipient alice \
--gas-budget 10000000
Advanced Operations
ptb
Build and execute programmable transaction blocks:
iota client ptb [COMMANDS]
See Transaction Builder for details.
publish
Publish a Move package:
iota client publish [OPTIONS] [PACKAGE_PATH]
See Move Commands for details.
upgrade
Upgrade a Move package:
iota client upgrade [OPTIONS] [PACKAGE_PATH]
See Move Commands for details.
verify-bytecode-meter
Verify bytecode meter limits:
iota client verify-bytecode-meter [OPTIONS]
Options:
--package <PATH> - Package path
--protocol-version <VERSION> - Protocol version to use
--module <PATH>... - Specific module paths to verify
Example:
iota client verify-bytecode-meter --package ./my_package
verify-source
Verify on-chain package matches local source:
iota client verify-source [OPTIONS] [PACKAGE_PATH]
Options:
--verify-deps - Also verify dependencies
--skip-source - Skip source verification (only valid with --verify-deps)
--address-override <ADDRESS> - Override package address
Example:
iota client verify-source ./my_package --verify-deps
Signing & Execution
sign
Sign transaction data:
iota client sign [OPTIONS]
Options:
--address <ADDRESS> - Signer address or alias
--data <BASE64> - Base64-encoded transaction data
--intent <INTENT> - Intent scope (optional)
Example:
iota client sign \
--address alice \
--data AAA... \
--intent transaction
execute-signed-tx
Execute a signed transaction:
iota client execute-signed-tx [OPTIONS]
Options:
--tx-bytes <BASE64> - Transaction bytes
--signatures <BASE64>... - Signature(s)
Example:
iota client execute-signed-tx \
--tx-bytes AAA... \
--signatures AQED...
execute-combined-signed-tx
Execute a combined signed transaction:
iota client execute-combined-signed-tx --signed-tx-bytes <BASE64>
serialized-tx
Inspect serialized transaction:
iota client serialized-tx <TX_BYTES> [OPTIONS]
Options:
--dry-run - Perform dry run
--dev-inspect - Dev inspect mode
Example:
iota client serialized-tx AAA... --dry-run
Transaction Processing Options
Many transaction commands support these processing flags:
--tx-digest - Only compute and display digest
--dry-run - Simulate without executing
--dev-inspect - Dev inspect mode (no state changes)
--serialize-unsigned-transaction - Output unsigned transaction bytes
--serialize-signed-transaction - Output signed transaction bytes
--sender <ADDRESS> - Override sender address
--display <FIELDS> - Select response fields to display
--gas-budget <AMOUNT> - Set gas budget
--gas-price <PRICE> - Set gas price
--gas-sponsor <ADDRESS> - Set gas sponsor
Faucet
Request test tokens:
iota client faucet [OPTIONS]
Options:
--address <ADDRESS> - Address to fund (defaults to active)
--url <URL> - Faucet URL (defaults to active env faucet)
Example:
iota client faucet --address alice
Replay & Debugging
replay-transaction
Replay a transaction:
iota client replay-transaction [OPTIONS]
Options:
--tx-digest <DIGEST> - Transaction digest
--gas-info - Show gas details
--ptb-info - Show PTB command details
--executor-version <VERSION> - Executor version
--protocol-version <VERSION> - Protocol version
Example:
iota client replay-transaction \
--tx-digest 5KzKVq7qP2xH8FwkQJqxhPNBjkFVjM3xZoJpP5KwqAkH \
--gas-info
replay-batch
Replay multiple transactions:
iota client replay-batch [OPTIONS]
Options:
--path <FILE> - File with transaction digests (one per line)
--terminate-early - Stop on first error
replay-checkpoint
Replay transactions from checkpoints:
iota client replay-checkpoint [OPTIONS]
Options:
--start <NUM> - Starting checkpoint
--end <NUM> - Ending checkpoint
--terminate-early - Stop on first error
Example:
iota client replay-checkpoint --start 100 --end 200
profile-transaction
Profile transaction gas usage:
iota client profile-transaction [OPTIONS]
Options:
--tx-digest <DIGEST> - Transaction to profile
--profile-output <PATH> - Output file path
Example:
iota client profile-transaction \
--tx-digest 5KzKVq7qP2xH8FwkQJqxhPNBjkFVjM3xZoJpP5KwqAkH \
--profile-output ./profile.json
All commands support JSON output:
iota client balance --json
Example JSON output:
{
"coinType": "0x2::iota::IOTA",
"totalBalance": "1000000000000",
"lockedBalance": "0"
}
Next Steps
Move Commands
Build and publish Move packages
Transaction Builder
Create complex transactions with PTB