Portal Community

balance

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
ownerAddresstext✓ YesAddress to count NFTs for.
{ "success": true, "balance": "3" }

ownerOf

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
tokenIdtext✓ YesInteger uint256 token ID.
{ "success": true, "owner": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb" }

transferFrom / safeTransferFrom — need credential

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
fromtext✓ YesCurrent owner (or approved caller).
totext✓ YesRecipient address.
tokenIdtext✓ YesInteger uint256 token ID.
Prefer safeTransferFrom: it performs the same transfer but additionally checks the recipient can handle ERC-721 tokens (via onERC721Received) when the recipient is a contract — transferFrom skips that check and can permanently strand an NFT if the recipient contract wasn't built to receive them.

approve / setApprovalForAll — need credential

OperationFieldsDescription
approvecontractAddress*, spender*, tokenId*Approve a single address to transfer one specific token.
setApprovalForAllcontractAddress*, operator*, approved* (boolean)Approve (or revoke) an operator for every token this account owns in the collection.

getApproved / isApprovedForAll

OperationFieldsReturns
getApprovedcontractAddress*, tokenId*{ "approved": "0x..." } — the single-token approved address, or the zero address if none.
isApprovedForAllcontractAddress*, owner*, operator*{ "isApproved": true }

tokenUri

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
tokenIdtext✓ YesInteger uint256 token ID.
{ "success": true, "tokenUri": "ipfs://bafybeig.../1234.json" }

The raw URI as returned by the contract, unresolved — often an ipfs:// URI. Use nft.getMetadata if you also want the fetched/parsed metadata document.

mint — non-standard, needs credential

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
totext✓ YesRecipient of the new token.
tokenIdtextNoExplicit token ID. When supplied, calls {functionName}(address,uint256); when omitted, calls the auto-incrementing {functionName}(address) shape.
functionNametextNo (default "safeMint")Override if the contract names its mint function differently.
Not part of the ERC-721 standard (EIP-721): minting shape varies by project. This assumes a common OpenZeppelin-style pattern and will revert against contracts that don't implement a matching function.

listOwnedTokens — addendum v3

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
ownerAddresstext✓ YesAddress to list owned tokens for.
limitnumberNo (default 100)Page size, 1–1000.
offsetnumberNo (default 0)Page offset.
{ "success": true, "tokenIds": ["17", "204", "980"], "totalBalance": 3 }
Requires ERC-721 Enumerable: this is gated on the real ERC-721 Enumerable extension (interface ID 0x780e9d63) being implemented by the contract. It fails clearly with NOT_SUPPORTED when the contract doesn't implement it, rather than attempting an unreliable Transfer-event log scan. Many popular collections (including most large PFP projects) skip Enumerable to save gas on mint — check with contract.detectStandards first if unsure.

getMetadata — addendum v3

FieldTypeRequiredDescription
contractAddresstext✓ YesERC-721 contract address.
tokenIdtext✓ YesInteger uint256 token ID.
timeoutSecondsnumberNo (default 10)HTTP fetch timeout, 1–60.
{
  "success": true,
  "tokenUri": "ipfs://bafybeig.../1234.json",
  "metadataJson": "{\"name\":\"Cool Cat #1234\",\"image\":\"ipfs://...\",\"attributes\":[...]}"
}
This node's only outbound non-RPC HTTP call: calls tokenUri() on-chain, resolves an ipfs:// URI to the public ipfs.io gateway if needed, then fetches and returns the metadata document as raw JSON text — everything else on this node talks only to the configured RPC endpoint.