Documentation Index
Fetch the complete documentation index at: https://mintlify.com/near/near-api-ts/llms.txt
Use this file to discover all available pages before exploring further.
Type definitions for the NEAR API client interface and related functionality.
Client
The main client interface for interacting with the NEAR blockchain.
type Client = {
// Account methods
getAccountInfo: GetAccountInfo;
getAccountAccessKey: GetAccountAccessKey;
getAccountAccessKeys: GetAccountAccessKeys;
safeGetAccountInfo: SafeGetAccountInfo;
safeGetAccountAccessKey: SafeGetAccountAccessKey;
safeGetAccountAccessKeys: SafeGetAccountAccessKeys;
// Contract methods
callContractReadFunction: CallContractReadFunction;
safeCallContractReadFunction: SafeCallContractReadFunction;
// Block methods
getBlock: GetBlock;
safeGetBlock: SafeGetBlock;
// Transaction methods
sendSignedTransaction: SendSignedTransaction;
safeSendSignedTransaction: SafeSendSignedTransaction;
// Cache methods
getRecentBlockHash: GetRecentBlockHash;
safeGetRecentBlockHash: SafeGetRecentBlockHash;
};
Properties
Each method has two variants:
- Throwable variant: Throws errors on failure (e.g.,
getAccountInfo)
- Safe variant: Returns
Result<T, E> type (e.g., safeGetAccountInfo)
Client Creation
CreateClient
import { createClient } from '@near-api/universal';
const client = createClient({
networkId: 'testnet',
rpcEndpoint: 'https://rpc.testnet.near.org'
});
See Client Creation for more details.
Account Methods
GetAccountInfo
Retrieve account information.
type GetAccountInfo = (
accountId: AccountId,
options?: {
blockReference?: BlockReference;
signal?: AbortSignal;
}
) => Promise<GetAccountInfoOutput>;
type GetAccountInfoOutput = {
accountId: AccountId;
balance: string;
locked: string;
codeHash: string;
storageUsage: number;
storagePaidAt: number;
blockHeight: number;
blockHash: BlockHash;
};
Example:
const account = await client.getAccountInfo('alice.near');
console.log('Balance:', account.balance);
GetAccountAccessKey
Get a specific access key for an account.
type GetAccountAccessKey = (
accountId: AccountId,
publicKey: PublicKey,
options?: {
blockReference?: BlockReference;
signal?: AbortSignal;
}
) => Promise<GetAccountAccessKeyOutput>;
GetAccountAccessKeys
Get all access keys for an account.
type GetAccountAccessKeys = (
accountId: AccountId,
options?: {
blockReference?: BlockReference;
signal?: AbortSignal;
}
) => Promise<GetAccountAccessKeysOutput>;
Contract Methods
CallContractReadFunction
Call a read-only contract function.
type CallContractReadFunction = <R = unknown>(
args: {
contractId: AccountId;
functionName: ContractFunctionName;
functionArgs?: MaybeJsonLikeValue;
blockReference?: BlockReference;
signal?: AbortSignal;
} & {
options?: {
serializeArgs?: BaseSerializeArgsFn;
deserializeResult?: BaseDeserializeResultFn<R>;
};
}
) => Promise<CallContractReadFunctionOutput<R>>;
type CallContractReadFunctionOutput<R> = {
result: R;
blockHeight: number;
blockHash: BlockHash;
logs: string[];
};
Example:
const result = await client.callContractReadFunction({
contractId: 'contract.near',
functionName: 'get_balance',
functionArgs: { account_id: 'alice.near' }
});
console.log('Result:', result.result);
Block Methods
GetBlock
Retrieve block information.
type GetBlock = (
blockReference: BlockReference,
options?: {
signal?: AbortSignal;
}
) => Promise<GetBlockOutput>;
Example:
// Get latest block
const block = await client.getBlock('LatestFinalBlock');
// Get specific block by height
const block2 = await client.getBlock({ blockHeight: 12345 });
// Get block by hash
const block3 = await client.getBlock({
blockHash: 'DkZgMd8T7K3Y...'
});
Transaction Methods
SendSignedTransaction
Send a signed transaction to the network.
type SendSignedTransaction = (
signedTransaction: SignedTransaction,
options?: {
signal?: AbortSignal;
}
) => Promise<SendSignedTransactionOutput>;
type SendSignedTransactionOutput = {
transactionHash: CryptoHash;
// ... additional transaction result fields
};
Example:
import { sendSignedTransaction } from '@near-api/universal';
const result = await client.sendSignedTransaction(signedTx);
console.log('Transaction hash:', result.transactionHash);
Cache Methods
GetRecentBlockHash
Get a recent block hash for transaction signing.
type GetRecentBlockHash = (
options?: {
signal?: AbortSignal;
}
) => Promise<BlockHash>;
Example:
const blockHash = await client.getRecentBlockHash();
Options
BlockReference
Specify which block to query.
type BlockReference =
| 'LatestOptimisticBlock' // Latest block (may not be final)
| 'LatestNearFinalBlock' // Near-final block
| 'LatestFinalBlock' // Latest finalized block (recommended)
| 'EarliestAvailableBlock' // Earliest available
| 'GenesisBlock' // Genesis block
| { blockHash: BlockHash } // Specific block by hash
| { blockHeight: number }; // Specific block by height
BaseOptions
type BaseOptions = {
signal?: AbortSignal; // For request cancellation
};
Example:
const controller = new AbortController();
try {
const account = await client.getAccountInfo('alice.near', {
signal: controller.signal
});
} catch (error) {
if (error.name === 'AbortError') {
console.log('Request cancelled');
}
}
// Cancel the request
controller.abort();
Error Registry
interface ClientPublicErrorRegistry
extends CreateClientPublicErrorRegistry,
GetAccountInfoPublicErrorRegistry,
GetAccountAccessKeyPublicErrorRegistry,
GetAccountAccessKeysPublicErrorRegistry,
CallContractReadFunctionPublicErrorRegistry,
GetBlockPublicErrorRegistry,
GetRecentBlockHashPublicErrorRegistry,
SendSignedTransactionPublicErrorRegistry {}
Each method can throw or return errors from its respective error registry.
Examples
Basic Client Usage
import { createClient } from '@near-api/universal';
const client = createClient({
networkId: 'testnet',
rpcEndpoint: 'https://rpc.testnet.near.org'
});
// Get account info
const account = await client.getAccountInfo('alice.near');
// Call contract
const result = await client.callContractReadFunction({
contractId: 'contract.near',
functionName: 'get_data'
});
// Get block
const block = await client.getBlock('LatestFinalBlock');
Safe Variant Usage
const result = await client.safeGetAccountInfo('alice.near');
if (result.ok) {
console.log('Balance:', result.value.balance);
} else {
console.error('Error:', result.error.kind);
}
With Abort Signal
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 5000);
try {
const account = await client.getAccountInfo('alice.near', {
signal: controller.signal
});
clearTimeout(timeout);
} catch (error) {
if (error.name === 'AbortError') {
console.log('Request timed out');
}
}