openapi: 3.0.3 info: title: Nano RPC API description: > The Nano RPC API is a JSON-RPC HTTP interface for interacting with the Nano network. Nano is a feeless, instant digital currency using a block-lattice architecture where each account maintains its own blockchain. The RPC API supports account queries, block operations, wallet management, node diagnostics, and unit conversions. All requests are POST with a JSON body containing an "action" field identifying the RPC command. version: 1.0.0 contact: name: Nano Foundation url: https://nano.org/en/developers email: integrations@nano.org license: name: BSD-2-Clause url: https://opensource.org/licenses/BSD-2-Clause termsOfService: https://nano.org/terms-of-use externalDocs: description: Nano RPC Protocol Documentation url: https://docs.nano.org/commands/rpc-protocol/ servers: - url: http://localhost:7076 description: Local Nano node (default RPC port) paths: # ── Account Operations ─────────────────────────────────────────────────────── /account_balance: post: operationId: account_balance summary: Get account balance description: Returns the balance for an account in raw units. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [account_balance] account: type: string description: Nano account address (nano_ prefix) include_only_confirmed: type: boolean description: Only include confirmed blocks in balance example: action: account_balance account: "nano_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3" responses: '200': description: Account balance in raw units content: application/json: schema: $ref: '#/components/schemas/AccountBalanceResponse' /account_block_count: post: operationId: account_block_count summary: Get account block count description: Returns the number of blocks in the account's blockchain. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [account_block_count] account: type: string example: action: account_block_count account: "nano_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3" responses: '200': description: Block count for the account content: application/json: schema: type: object properties: block_count: type: string /account_get: post: operationId: account_get summary: Get account from public key description: Returns the account address corresponding to a public key. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, key] properties: action: type: string enum: [account_get] key: type: string description: Public key (hex) responses: '200': description: Account address content: application/json: schema: type: object properties: account: type: string /account_history: post: operationId: account_history summary: Get account history description: Returns a list of blocks for an account with transaction details. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account, count] properties: action: type: string enum: [account_history] account: type: string count: type: integer description: Number of blocks to return raw: type: boolean head: type: string description: Block hash to start from offset: type: integer reverse: type: boolean include_linked_account: type: boolean account_filter: type: array items: type: string responses: '200': description: Account history content: application/json: schema: $ref: '#/components/schemas/AccountHistoryResponse' /account_info: post: operationId: account_info summary: Get account info description: Returns detailed information about an account's blockchain state. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [account_info] account: type: string representative: type: boolean weight: type: boolean receivable: type: boolean include_confirmed: type: boolean example: action: account_info account: "nano_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3" representative: true weight: true responses: '200': description: Account information content: application/json: schema: $ref: '#/components/schemas/AccountInfoResponse' /account_key: post: operationId: account_key summary: Get public key for account description: Returns the public key corresponding to a Nano account address. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [account_key] account: type: string responses: '200': description: Public key content: application/json: schema: type: object properties: key: type: string /account_representative: post: operationId: account_representative summary: Get account representative description: Returns the representative for an account. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [account_representative] account: type: string responses: '200': description: Account representative content: application/json: schema: type: object properties: representative: type: string /account_weight: post: operationId: account_weight summary: Get account voting weight description: Returns the voting weight for an account. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [account_weight] account: type: string responses: '200': description: Voting weight content: application/json: schema: type: object properties: weight: type: string /accounts_balances: post: operationId: accounts_balances summary: Get balances for multiple accounts description: Returns balances for a list of Nano accounts. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, accounts] properties: action: type: string enum: [accounts_balances] accounts: type: array items: type: string include_only_confirmed: type: boolean responses: '200': description: Balances for each account content: application/json: schema: type: object properties: balances: type: object additionalProperties: $ref: '#/components/schemas/AccountBalanceResponse' errors: type: object additionalProperties: type: string /accounts_frontiers: post: operationId: accounts_frontiers summary: Get frontiers for multiple accounts description: Returns the frontier (head block hash) for each account. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, accounts] properties: action: type: string enum: [accounts_frontiers] accounts: type: array items: type: string responses: '200': description: Frontier hashes content: application/json: schema: type: object properties: frontiers: type: object additionalProperties: type: string errors: type: object additionalProperties: type: string /accounts_receivable: post: operationId: accounts_receivable summary: Get receivable blocks for multiple accounts description: Returns pending/receivable blocks for a list of accounts. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, accounts, count] properties: action: type: string enum: [accounts_receivable] accounts: type: array items: type: string count: type: integer threshold: type: string source: type: boolean include_active: type: boolean sorting: type: boolean include_only_confirmed: type: boolean responses: '200': description: Receivable blocks per account content: application/json: schema: type: object properties: blocks: type: object additionalProperties: type: object /accounts_representatives: post: operationId: accounts_representatives summary: Get representatives for multiple accounts description: Returns the representative for each of the given accounts. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, accounts] properties: action: type: string enum: [accounts_representatives] accounts: type: array items: type: string responses: '200': description: Representatives per account content: application/json: schema: type: object properties: representatives: type: object additionalProperties: type: string errors: type: object additionalProperties: type: string /available_supply: post: operationId: available_supply summary: Get available supply description: Returns the amount of Nano available in circulation. tags: [Ledger] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [available_supply] responses: '200': description: Available supply in raw units content: application/json: schema: type: object properties: available: type: string # ── Block Operations ───────────────────────────────────────────────────────── /block_account: post: operationId: block_account summary: Get account for block description: Returns the account that owns the given block hash. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [block_account] hash: type: string responses: '200': description: Account for the block content: application/json: schema: type: object properties: account: type: string /block_confirm: post: operationId: block_confirm summary: Request block confirmation description: Requests active confirmation of a block by the network. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [block_confirm] hash: type: string responses: '200': description: Confirmation started content: application/json: schema: type: object properties: started: type: string /block_count: post: operationId: block_count summary: Get total block count description: Returns the total number of blocks in the ledger. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [block_count] include_cemented: type: boolean responses: '200': description: Block counts content: application/json: schema: type: object properties: count: type: string unchecked: type: string cemented: type: string /block_create: post: operationId: block_create summary: Create a block description: Creates a new state block for the Nano network. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, json_block, type, balance, representative, link, previous] properties: action: type: string enum: [block_create] json_block: type: string type: type: string enum: [state] balance: type: string key: type: string wallet: type: string account: type: string representative: type: string link: type: string previous: type: string work: type: string version: type: string difficulty: type: string responses: '200': description: Created block content: application/json: schema: type: object properties: hash: type: string block: type: object difficulty: type: string /block_hash: post: operationId: block_hash summary: Compute block hash description: Returns the hash of a given block without publishing it. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, json_block, block] properties: action: type: string enum: [block_hash] json_block: type: string block: type: object responses: '200': description: Block hash content: application/json: schema: type: object properties: hash: type: string /block_info: post: operationId: block_info summary: Get block info description: Returns detailed information about a specific block hash. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, hash, json_block] properties: action: type: string enum: [block_info] hash: type: string json_block: type: string include_linked_account: type: boolean responses: '200': description: Block information content: application/json: schema: $ref: '#/components/schemas/BlockInfoResponse' /blocks: post: operationId: blocks summary: Get multiple blocks description: Returns block contents for a list of block hashes. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, hashes, json_block] properties: action: type: string enum: [blocks] hashes: type: array items: type: string json_block: type: string responses: '200': description: Block contents content: application/json: schema: type: object properties: blocks: type: object additionalProperties: type: object /blocks_info: post: operationId: blocks_info summary: Get detailed info for multiple blocks description: Returns detailed information for a list of block hashes. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, hashes, json_block] properties: action: type: string enum: [blocks_info] hashes: type: array items: type: string json_block: type: string pending: type: boolean source: type: boolean receive_hash: type: boolean include_not_found: type: boolean include_linked_account: type: boolean responses: '200': description: Block details content: application/json: schema: type: object properties: blocks: type: object additionalProperties: $ref: '#/components/schemas/BlockInfoResponse' blocks_not_found: type: array items: type: string /chain: post: operationId: chain summary: Get chain of blocks description: Returns a list of block hashes starting from the given block, traversing backwards. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, block, count] properties: action: type: string enum: [chain] block: type: string count: type: integer offset: type: integer reverse: type: boolean responses: '200': description: Chain of block hashes content: application/json: schema: type: object properties: blocks: type: array items: type: string /process: post: operationId: process summary: Process a block description: Publishes a signed block to the Nano network. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, block, json_block, subtype] properties: action: type: string enum: [process] block: oneOf: - type: object - type: string json_block: type: string subtype: type: string enum: [send, receive, open, change, epoch] force: type: boolean async: type: boolean responses: '200': description: Block hash after processing content: application/json: schema: type: object properties: hash: type: string /republish: post: operationId: republish summary: Republish blocks description: Rebroadcasts blocks starting from the given hash to network peers. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [republish] hash: type: string count: type: integer responses: '200': description: Republished block hashes content: application/json: schema: type: object properties: blocks: type: array items: type: string /sign: post: operationId: sign summary: Sign a block description: Signs a block with a provided private key or wallet. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, json_block, block] properties: action: type: string enum: [sign] json_block: type: string block: type: object key: type: string wallet: type: string account: type: string responses: '200': description: Signed block content: application/json: schema: type: object properties: signature: type: string block: type: object /successors: post: operationId: successors summary: Get successor blocks description: Returns successive block hashes forward from the given block. tags: [Blocks] requestBody: required: true content: application/json: schema: type: object required: [action, block, count] properties: action: type: string enum: [successors] block: type: string count: type: integer responses: '200': description: Successor block hashes content: application/json: schema: type: object properties: blocks: type: array items: type: string # ── Work Operations ────────────────────────────────────────────────────────── /work_cancel: post: operationId: work_cancel summary: Cancel work generation description: Cancels pending work generation for a given hash. tags: [Work] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [work_cancel] hash: type: string responses: '200': description: Cancellation acknowledged content: application/json: schema: type: object /work_generate: post: operationId: work_generate summary: Generate proof-of-work description: Generates proof-of-work for a given block hash. tags: [Work] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [work_generate] hash: type: string difficulty: type: string multiplier: type: string account: type: string responses: '200': description: Generated work value content: application/json: schema: type: object properties: work: type: string difficulty: type: string multiplier: type: string /work_validate: post: operationId: work_validate summary: Validate proof-of-work description: Validates that a given work value satisfies difficulty for a hash. tags: [Work] requestBody: required: true content: application/json: schema: type: object required: [action, work, hash] properties: action: type: string enum: [work_validate] work: type: string hash: type: string difficulty: type: string multiplier: type: string responses: '200': description: Work validation result content: application/json: schema: type: object properties: valid: type: boolean difficulty: type: string multiplier: type: string # ── Node & Network Operations ──────────────────────────────────────────────── /bootstrap: post: operationId: bootstrap summary: Bootstrap from peer description: Initiates a bootstrap sync from the specified peer node. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action, address, port] properties: action: type: string enum: [bootstrap] address: type: string port: type: string bypass_frontier_confirmation: type: boolean id: type: string responses: '200': description: Bootstrap started content: application/json: schema: type: object properties: success: type: string /bootstrap_any: post: operationId: bootstrap_any summary: Bootstrap from any peer description: Initiates a bootstrap sync from any available peer. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [bootstrap_any] force: type: boolean id: type: string account: type: string responses: '200': description: Bootstrap started content: application/json: schema: type: object properties: success: type: string /bootstrap_lazy: post: operationId: bootstrap_lazy summary: Lazy bootstrap from hash description: Initiates lazy (hash-based) bootstrap starting from a specific block. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [bootstrap_lazy] hash: type: string force: type: boolean id: type: string responses: '200': description: Bootstrap status content: application/json: schema: type: object properties: started: type: string key_inserted: type: string /bootstrap_status: post: operationId: bootstrap_status summary: Get bootstrap status description: Returns current bootstrap attempt status and connection counts. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [bootstrap_status] responses: '200': description: Bootstrap status information content: application/json: schema: type: object properties: bootstrap_threads: type: string running_attempts_count: type: string total_attempts_count: type: string connections: type: object attempts: type: array items: type: object /confirmation_active: post: operationId: confirmation_active summary: Get active confirmations description: Returns a list of currently active confirmation elections. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [confirmation_active] announcements: type: integer responses: '200': description: Active confirmations content: application/json: schema: type: object properties: confirmations: type: array items: type: string unconfirmed: type: string confirmed: type: string /confirmation_history: post: operationId: confirmation_history summary: Get confirmation history description: Returns historical data about completed confirmation elections. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [confirmation_history] hash: type: string responses: '200': description: Confirmation history records content: application/json: schema: type: object properties: confirmation_stats: type: object confirmations: type: array items: type: object properties: hash: type: string duration: type: string time: type: string tally: type: string blocks: type: string voters: type: string /confirmation_info: post: operationId: confirmation_info summary: Get confirmation info for root description: Returns information about the election for a specific block root. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action, root, json_block] properties: action: type: string enum: [confirmation_info] root: type: string json_block: type: string contents: type: boolean representatives: type: boolean responses: '200': description: Confirmation election details content: application/json: schema: type: object properties: announcements: type: string voters: type: string last_winner: type: string total_tally: type: string blocks: type: object /confirmation_quorum: post: operationId: confirmation_quorum summary: Get confirmation quorum info description: Returns quorum and online stake information for confirmation. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [confirmation_quorum] peer_details: type: boolean responses: '200': description: Quorum information content: application/json: schema: type: object properties: quorum_delta: type: string online_weight_quorum_percent: type: string online_weight_minimum: type: string online_stake_total: type: string peers_stake_total: type: string trended_stake_total: type: string /delegators: post: operationId: delegators summary: Get delegators for representative description: Returns all accounts delegating voting weight to the given representative. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [delegators] account: type: string threshold: type: string count: type: integer start: type: string responses: '200': description: Delegators and their balances content: application/json: schema: type: object properties: delegators: type: object additionalProperties: type: string /delegators_count: post: operationId: delegators_count summary: Get delegator count for representative description: Returns the number of accounts delegating to a representative. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [delegators_count] account: type: string responses: '200': description: Delegator count content: application/json: schema: type: object properties: count: type: string /election_statistics: post: operationId: election_statistics summary: Get election statistics description: Returns statistics about the active elections subsystem (v27.0+). tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [election_statistics] responses: '200': description: Election statistics content: application/json: schema: type: object properties: normal: type: string priority: type: string hinted: type: string optimistic: type: string total: type: string aec_utilization_percentage: type: string max_election_age: type: string average_election_age: type: string /frontier_count: post: operationId: frontier_count summary: Get frontier count description: Returns the total number of account frontiers in the ledger. tags: [Ledger] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [frontier_count] responses: '200': description: Frontier count content: application/json: schema: type: object properties: count: type: string /frontiers: post: operationId: frontiers summary: Get all frontiers description: Returns frontier hashes starting from the given account, up to count. tags: [Ledger] requestBody: required: true content: application/json: schema: type: object required: [action, account, count] properties: action: type: string enum: [frontiers] account: type: string count: type: integer responses: '200': description: Frontier hashes per account content: application/json: schema: type: object properties: frontiers: type: object additionalProperties: type: string /keepalive: post: operationId: keepalive summary: Send keepalive description: Sends a keepalive packet to the specified peer. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action, address, port] properties: action: type: string enum: [keepalive] address: type: string port: type: string responses: '200': description: Keepalive acknowledged content: application/json: schema: type: object /ledger: post: operationId: ledger summary: Query ledger entries description: Returns a list of account frontier information from the ledger. tags: [Ledger] requestBody: required: true content: application/json: schema: type: object required: [action, account, count] properties: action: type: string enum: [ledger] account: type: string count: type: integer representative: type: boolean weight: type: boolean receivable: type: boolean modified_since: type: integer sorting: type: boolean threshold: type: string responses: '200': description: Ledger account entries content: application/json: schema: type: object properties: accounts: type: object additionalProperties: type: object /node_id: post: operationId: node_id summary: Get node identity description: Returns the public and private node identity keys. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [node_id] responses: '200': description: Node identity information content: application/json: schema: type: object properties: private: type: string public: type: string node_id: type: string /peers: post: operationId: peers summary: Get connected peers description: Returns a list of connected peers and their protocol versions. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [peers] peer_details: type: boolean responses: '200': description: Connected peers content: application/json: schema: type: object properties: peers: type: object additionalProperties: oneOf: - type: string - type: object /populate_backlog: post: operationId: populate_backlog summary: Populate election backlog description: Adds unconfirmed blocks to the confirmation backlog queue. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [populate_backlog] responses: '200': description: Backlog populated content: application/json: schema: type: object /receivable: post: operationId: receivable summary: Get receivable blocks for account description: Returns pending receivable blocks for a single account. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [receivable] account: type: string count: type: integer threshold: type: string source: type: boolean responses: '200': description: Receivable block hashes or amounts content: application/json: schema: type: object properties: blocks: oneOf: - type: array items: type: string - type: object /receivable_exists: post: operationId: receivable_exists summary: Check if receivable block exists description: Checks whether a specific block hash is receivable for an account. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, hash] properties: action: type: string enum: [receivable_exists] hash: type: string responses: '200': description: Existence check result content: application/json: schema: type: object properties: exists: type: string /representatives: post: operationId: representatives summary: Get all representatives description: Returns all representatives and their voting weights. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [representatives] count: type: integer sorting: type: boolean responses: '200': description: Representatives and weights content: application/json: schema: type: object properties: representatives: type: object additionalProperties: type: string /representatives_online: post: operationId: representatives_online summary: Get online representatives description: Returns representatives that have recently voted. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [representatives_online] weight: type: boolean responses: '200': description: Online representatives content: application/json: schema: type: object properties: representatives: type: array items: type: string /stats: post: operationId: stats summary: Get node statistics description: Returns internal node statistics by category. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [stats] type: type: string enum: [counters, samples, objects, database] responses: '200': description: Node statistics content: application/json: schema: type: object /telemetry: post: operationId: telemetry summary: Get network telemetry description: Returns telemetry data from connected peers. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [telemetry] raw: type: boolean responses: '200': description: Peer telemetry data content: application/json: schema: type: object /uptime: post: operationId: uptime summary: Get node uptime description: Returns how many seconds the node has been running. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [uptime] responses: '200': description: Node uptime in seconds content: application/json: schema: type: object properties: uptime: type: string /validate_account_number: post: operationId: validate_account_number summary: Validate account number description: Checks whether the given account address is valid. tags: [Accounts] requestBody: required: true content: application/json: schema: type: object required: [action, account] properties: action: type: string enum: [validate_account_number] account: type: string responses: '200': description: Validation result content: application/json: schema: type: object properties: valid: type: string enum: ["0", "1"] /version: post: operationId: version summary: Get node version description: Returns the RPC, store, and network protocol versions of the node. tags: [Node] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [version] responses: '200': description: Version information content: application/json: schema: type: object properties: rpc_version: type: string store_version: type: string protocol_version: type: string node_vendor: type: string # ── Key Operations ─────────────────────────────────────────────────────────── /deterministic_key: post: operationId: deterministic_key summary: Generate deterministic key pair description: Derives a key pair from a seed and index using BIP-like derivation. tags: [Keys] requestBody: required: true content: application/json: schema: type: object required: [action, seed, index] properties: action: type: string enum: [deterministic_key] seed: type: string index: type: string responses: '200': description: Key pair and account address content: application/json: schema: $ref: '#/components/schemas/KeyPairResponse' /key_create: post: operationId: key_create summary: Create new key pair description: Generates a new random private/public key pair and account address. tags: [Keys] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [key_create] responses: '200': description: New key pair and account content: application/json: schema: $ref: '#/components/schemas/KeyPairResponse' /key_expand: post: operationId: key_expand summary: Expand private key description: Derives the public key and account from a given private key. tags: [Keys] requestBody: required: true content: application/json: schema: type: object required: [action, key] properties: action: type: string enum: [key_expand] key: type: string description: Private key (hex) responses: '200': description: Public key and account address content: application/json: schema: $ref: '#/components/schemas/KeyPairResponse' # ── Wallet Operations ──────────────────────────────────────────────────────── /account_create: post: operationId: account_create summary: Create account in wallet description: Generates a new account in the specified wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [account_create] wallet: type: string work: type: boolean responses: '200': description: Created account address content: application/json: schema: type: object properties: account: type: string /account_list: post: operationId: account_list summary: List wallet accounts description: Returns all accounts stored in the given wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [account_list] wallet: type: string responses: '200': description: List of account addresses content: application/json: schema: type: object properties: accounts: type: array items: type: string /account_move: post: operationId: account_move summary: Move accounts between wallets description: Moves accounts from one wallet to another. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, source, accounts] properties: action: type: string enum: [account_move] wallet: type: string source: type: string accounts: type: array items: type: string responses: '200': description: Move result content: application/json: schema: type: object properties: moved: type: string /account_remove: post: operationId: account_remove summary: Remove account from wallet description: Removes an account from the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account] properties: action: type: string enum: [account_remove] wallet: type: string account: type: string responses: '200': description: Removal result content: application/json: schema: type: object /account_representative_set: post: operationId: account_representative_set summary: Set account representative description: Changes the representative for an account in a wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account, representative] properties: action: type: string enum: [account_representative_set] wallet: type: string account: type: string representative: type: string work: type: string responses: '200': description: Block hash for the change block content: application/json: schema: type: object properties: block: type: string /accounts_create: post: operationId: accounts_create summary: Create multiple wallet accounts description: Batch-creates multiple accounts in the given wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, count] properties: action: type: string enum: [accounts_create] wallet: type: string count: type: integer work: type: boolean responses: '200': description: Created account addresses content: application/json: schema: type: object properties: accounts: type: array items: type: string /password_change: post: operationId: password_change summary: Change wallet password description: Sets a new password for the given wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, password] properties: action: type: string enum: [password_change] wallet: type: string password: type: string responses: '200': description: Password change result content: application/json: schema: type: object /password_enter: post: operationId: password_enter summary: Enter wallet password description: Unlocks the wallet with the provided password. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, password] properties: action: type: string enum: [password_enter] wallet: type: string password: type: string responses: '200': description: Password validation result content: application/json: schema: type: object /password_valid: post: operationId: password_valid summary: Check if wallet password is valid description: Checks whether the current wallet password is valid (wallet is unlocked). tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [password_valid] wallet: type: string responses: '200': description: Password validity content: application/json: schema: type: object properties: valid: type: boolean /receive: post: operationId: receive summary: Receive a block description: Creates a receive block for a pending transaction. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account, block] properties: action: type: string enum: [receive] wallet: type: string account: type: string block: type: string work: type: string responses: '200': description: Receive block hash content: application/json: schema: type: object properties: block: type: string /receive_minimum: post: operationId: receive_minimum summary: Get receive minimum description: Returns the minimum receive amount configured for the node. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [receive_minimum] responses: '200': description: Minimum receive amount in raw units content: application/json: schema: type: object properties: receive_minimum: type: string /receive_minimum_set: post: operationId: receive_minimum_set summary: Set receive minimum description: Sets the minimum receive amount for the node. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, amount] properties: action: type: string enum: [receive_minimum_set] amount: type: string responses: '200': description: Set result content: application/json: schema: type: object /search_receivable: post: operationId: search_receivable summary: Search for receivable blocks description: Searches for pending receivable blocks for all accounts in the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [search_receivable] wallet: type: string responses: '200': description: Search started content: application/json: schema: type: object properties: started: type: string /search_receivable_all: post: operationId: search_receivable_all summary: Search receivable blocks for all wallets description: Searches for pending receivable blocks across all wallets on the node. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [search_receivable_all] responses: '200': description: Search started content: application/json: schema: type: object properties: started: type: string /send: post: operationId: send summary: Send Nano description: Creates and publishes a send block to transfer Nano to a destination. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, source, destination, amount] properties: action: type: string enum: [send] wallet: type: string source: type: string destination: type: string amount: type: string description: Amount in raw units work: type: string example: action: send wallet: "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" source: "nano_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3" destination: "nano_3qb6o6i1tkzr6jwr5s7eehfxwg9x6eemitdinbpi7u8bjjwsgqfj4wzser3x" amount: "1000000000000000000000000" responses: '200': description: Send block hash content: application/json: schema: type: object properties: block: type: string /wallet_add: post: operationId: wallet_add summary: Add private key to wallet description: Adds an existing private key to a wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, key] properties: action: type: string enum: [wallet_add] wallet: type: string key: type: string work: type: boolean responses: '200': description: Account for the added key content: application/json: schema: type: object properties: account: type: string /wallet_add_watch: post: operationId: wallet_add_watch summary: Add watch-only accounts to wallet description: Adds accounts to watch in the wallet without private keys. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, accounts] properties: action: type: string enum: [wallet_add_watch] wallet: type: string accounts: type: array items: type: string responses: '200': description: Watch accounts added content: application/json: schema: type: object /wallet_balances: post: operationId: wallet_balances summary: Get balances for all wallet accounts description: Returns balances for all accounts in the given wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_balances] wallet: type: string threshold: type: string responses: '200': description: Balances per account content: application/json: schema: type: object properties: balances: type: object additionalProperties: $ref: '#/components/schemas/AccountBalanceResponse' /wallet_change_seed: post: operationId: wallet_change_seed summary: Change wallet seed description: Replaces the wallet seed with a new one. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, seed] properties: action: type: string enum: [wallet_change_seed] wallet: type: string seed: type: string count: type: integer responses: '200': description: Seed change result content: application/json: schema: type: object /wallet_contains: post: operationId: wallet_contains summary: Check if wallet contains account description: Returns whether the wallet contains the given account. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account] properties: action: type: string enum: [wallet_contains] wallet: type: string account: type: string responses: '200': description: Containment result content: application/json: schema: type: object properties: exists: type: boolean /wallet_create: post: operationId: wallet_create summary: Create new wallet description: Creates a new wallet and returns its identifier. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action] properties: action: type: string enum: [wallet_create] responses: '200': description: New wallet identifier content: application/json: schema: type: object properties: wallet: type: string /wallet_destroy: post: operationId: wallet_destroy summary: Destroy a wallet description: Permanently deletes a wallet and all its accounts. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_destroy] wallet: type: string responses: '200': description: Destruction result content: application/json: schema: type: object /wallet_export: post: operationId: wallet_export summary: Export wallet description: Exports wallet data as a JSON string containing the seed. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_export] wallet: type: string responses: '200': description: Exported wallet JSON content: application/json: schema: type: object properties: json: type: string /wallet_frontiers: post: operationId: wallet_frontiers summary: Get frontiers for wallet accounts description: Returns the frontier block for each account in the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_frontiers] wallet: type: string responses: '200': description: Frontiers per account content: application/json: schema: type: object properties: frontiers: type: object additionalProperties: type: string /wallet_history: post: operationId: wallet_history summary: Get wallet transaction history description: Returns all transactions for accounts in the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_history] wallet: type: string modified_since: type: integer responses: '200': description: Wallet transaction history content: application/json: schema: type: object properties: history: type: array items: type: object /wallet_info: post: operationId: wallet_info summary: Get wallet information description: Returns metadata about the given wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_info] wallet: type: string responses: '200': description: Wallet metadata content: application/json: schema: type: object properties: deterministic: type: string block_count: type: string accounts_count: type: string min_version: type: string /wallet_ledger: post: operationId: wallet_ledger summary: Get ledger for wallet accounts description: Returns ledger information for all accounts in the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_ledger] wallet: type: string representative: type: boolean weight: type: boolean receivable: type: boolean sorting: type: boolean threshold: type: string responses: '200': description: Ledger entries for wallet accounts content: application/json: schema: type: object properties: accounts: type: object additionalProperties: type: object /wallet_lock: post: operationId: wallet_lock summary: Lock a wallet description: Locks the specified wallet, requiring password re-entry. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_lock] wallet: type: string responses: '200': description: Lock result content: application/json: schema: type: object /wallet_locked: post: operationId: wallet_locked summary: Check if wallet is locked description: Returns whether the wallet is currently locked. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_locked] wallet: type: string responses: '200': description: Lock status content: application/json: schema: type: object properties: locked: type: boolean /wallet_receivable: post: operationId: wallet_receivable summary: Get receivable blocks for wallet description: Returns pending receivable blocks for all wallet accounts. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_receivable] wallet: type: string threshold: type: string source: type: boolean include_active: type: boolean sorting: type: boolean count: type: integer responses: '200': description: Receivable blocks per account content: application/json: schema: type: object properties: blocks: type: object additionalProperties: type: object /wallet_representative: post: operationId: wallet_representative summary: Get wallet representative description: Returns the default representative for the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_representative] wallet: type: string responses: '200': description: Wallet representative content: application/json: schema: type: object properties: representative: type: string /wallet_representative_set: post: operationId: wallet_representative_set summary: Set wallet representative description: Sets the default representative for the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, representative] properties: action: type: string enum: [wallet_representative_set] wallet: type: string representative: type: string work: type: boolean responses: '200': description: Set result content: application/json: schema: type: object /wallet_republish: post: operationId: wallet_republish summary: Republish wallet blocks description: Republishes blocks for all accounts in the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet] properties: action: type: string enum: [wallet_republish] wallet: type: string count: type: integer responses: '200': description: Republished block hashes content: application/json: schema: type: object properties: blocks: type: array items: type: string /wallet_work_get: post: operationId: wallet_work_get summary: Get work for wallet account description: Returns the cached proof-of-work for an account in the wallet. tags: [Wallets] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account] properties: action: type: string enum: [wallet_work_get] wallet: type: string account: type: string responses: '200': description: Cached work value content: application/json: schema: type: object properties: work: type: string /work_get: post: operationId: work_get summary: Get cached work for account description: Returns the cached proof-of-work value for the account in a wallet. tags: [Work] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account] properties: action: type: string enum: [work_get] wallet: type: string account: type: string responses: '200': description: Cached work value content: application/json: schema: type: object properties: work: type: string /work_set: post: operationId: work_set summary: Set cached work for account description: Stores a proof-of-work value in cache for an account. tags: [Work] requestBody: required: true content: application/json: schema: type: object required: [action, wallet, account, work] properties: action: type: string enum: [work_set] wallet: type: string account: type: string work: type: string responses: '200': description: Work set result content: application/json: schema: type: object # ── Unit Conversion ────────────────────────────────────────────────────────── /nano_to_raw: post: operationId: nano_to_raw summary: Convert Nano to raw units description: Converts an amount from Nano denomination to raw units (10^30 raw = 1 Nano). tags: [Unit Conversion] requestBody: required: true content: application/json: schema: type: object required: [action, amount] properties: action: type: string enum: [nano_to_raw] amount: type: string example: action: nano_to_raw amount: "1" responses: '200': description: Equivalent amount in raw units content: application/json: schema: type: object properties: amount: type: string example: "1000000000000000000000000000000" /raw_to_nano: post: operationId: raw_to_nano summary: Convert raw units to Nano description: Converts an amount from raw units to Nano denomination. tags: [Unit Conversion] requestBody: required: true content: application/json: schema: type: object required: [action, amount] properties: action: type: string enum: [raw_to_nano] amount: type: string description: Amount in raw units example: action: raw_to_nano amount: "1000000000000000000000000000000" responses: '200': description: Equivalent amount in Nano content: application/json: schema: type: object properties: amount: type: string example: "1" components: schemas: AccountBalanceResponse: type: object properties: balance: type: string description: Confirmed balance in raw units pending: type: string description: Pending (receivable) balance in raw units (deprecated alias) receivable: type: string description: Pending (receivable) balance in raw units AccountHistoryResponse: type: object properties: account: type: string history: type: array items: type: object properties: type: type: string enum: [send, receive, change, epoch] account: type: string amount: type: string hash: type: string height: type: string local_timestamp: type: string previous: type: string AccountInfoResponse: type: object properties: frontier: type: string description: Hash of the head block open_block: type: string description: Hash of the account open block representative_block: type: string balance: type: string description: Confirmed balance in raw units modified_timestamp: type: string block_count: type: string representative: type: string weight: type: string receivable: type: string BlockInfoResponse: type: object properties: block_account: type: string amount: type: string balance: type: string height: type: string local_timestamp: type: string confirmed: type: string contents: type: object properties: type: type: string account: type: string previous: type: string representative: type: string balance: type: string link: type: string link_as_account: type: string signature: type: string work: type: string subtype: type: string enum: [send, receive, open, change, epoch] KeyPairResponse: type: object properties: private: type: string description: Private key (hex) public: type: string description: Public key (hex) account: type: string description: Nano account address ErrorResponse: type: object properties: error: type: string description: Human-readable error message tags: - name: Accounts description: Account balance, history, representative, and frontier queries - name: Blocks description: Block creation, processing, signing, and querying operations - name: Ledger description: Ledger-level queries for supply, frontiers, and account data - name: Node description: Node diagnostics, bootstrapping, peers, and confirmation management - name: Work description: Proof-of-work generation, validation, and caching - name: Keys description: Cryptographic key generation and derivation - name: Wallets description: Local wallet management for development and testing - name: Unit Conversion description: Conversion between Nano and raw unit denominations