Introduction

Welcome to the Triangle API documentation.

Base URL
https://api.triangleplatform.com
Node.js Library
npm install triangle

Authentication

The Triangle API uses API keys to authenticate requests. You can view and manage your API keys in the Triangle Dashboard.

Authentication to the API can be performed via HTTP Basic or Bearer authentication scheme. For Basic auth, provide your API key as the basic auth username value (you do not need to provide a password). For Bearer auth, provide your API key as the bearer token in the Authorization header.

Authentication
import Triangle from "triangle";

const triangle = new Triangle("secret_abc123");

Errors

This section will be updated soon.

Object
interface Error {
  object: string;
  message: string;
}
Example
{
  "object": "error",
  "message": "Something went wrong."
}

Idempotency

The API supports idempotency so that requests can be safely retried without accidentally performing the same operation twice.

To perform an idemponent request, provide the Idempotency-Key header with a unique string (such as v4 UUIDs). If the request is valid, the request and response will be saved under the given idempotency key. Subsequent request with the same key will return the same response. Keys are scheduled to be removed automatically after they're at least 24 hours old.

All POST requests accept idempotency keys. Sending idempotency keys in all other HTTP methods are ignored.

Versioning

This section will be updated soon.

Rate Limiting

This section will be updated soon.

Webhooks

This section will be updated soon.

Construct
const event = triangle.utils.webhooks.construct(
  req.body,
  req.headers["triangle-signature"],
  "whsec_abc123"
);
Verify
const isVerified = triangle.utils.webhooks.verify(
  req.body,
  req.headers["triangle-signature"],
  "whsec_abc123"
);

Chains

This is an object representing a chain.

Chains
  • Algorandalgorand
    The Algorand blockchain.
  • Aptosaptos
    The Aptos blockchain.
  • Arbitrumarbitrum
    The Arbitrum blockchain.
  • Avalanche C-Chainavalanche
    The Avalanche C-Chain blockchain.
  • BNB Smart Chainbnbsmartchain
    The BNB Smart Chain blockchain.
  • Bitcoinbitcoin
    The Bitcoin blockchain.
  • Bobaboba
    The Boba blockchain.
  • Celocelo
    The Celo blockchain.
  • Cronoscronos
    The Cronos blockchain.
  • Ethereumethereum
    The Ethereum blockchain.
  • Evmosevmos
    The Evmos blockchain.
  • Fantomfantom
    The Fantom blockchain.
  • Flowflow
    The Flow blockchain.
  • Fuelfuel
    The Fuel blockchain.
  • Harmonyharmony
    The Harmony blockchain.
  • Kusamakusama
    The Kusama blockchain.
  • Moonbeammoonbeam
    The Moonbeam blockchain.
  • Optimismoptimism
    The Optimism blockchain.
  • Polkadotpolkadot
    The Polkadot blockchain.
  • Polygonpolygon
    The Polygon blockchain.
  • Skaleskale
    The Skale blockchain.
  • Solanasolana
    The Solana blockchain.
  • Stacksstacks
    The Stacks blockchain.
  • Suisui
    The Sui blockchain.
  • Terraterra
    The Terra blockchain.
  • zkSynczksync
    The zkSync blockchain.

The chain object

Attributes
  • idstring
    The unique identifier for the object.
  • namestring
    The name of the chain.
  • symbolstring
    The symbol of the native token.
Object
interface Chain {
  id: string;
  object: string;
  name: string;
  symbol: string;
}
Example
{
  "id": "ethereum",
  "object": "chain",
  "name": "Ethereum",
  "symbol": "ETH"
}

Retrieve a chain

Retrieves the chain with the given ID.

GET /v1/chains/:id
const chain = await triangle.chains.retrieve(
  "ethereum"
);
Response
{
  "id": "ethereum",
  "object": "chain",
  "name": "Ethereum",
  "symbol": "ETH"
}

List all chains

Returns a list of all the chains supported on Triangle.

GET /v1/chains
const chains = await triangle.chains.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "ethereum",
      "object": "chain",
      "name": "Ethereum",
      "symbol": "ETH"
    }
  ]
}

Networks

This is an object representing a network on a chain.

Networks
  • Algorand Mainnetalgorand_mainnet
    The Mainnet network on the Algorand blockchain.
  • Algorand Testnetalgorand_testnet
    The Testnet network on the Algorand blockchain.
  • Algorand Betanetalgorand_betanet
    The Betanet network on the Algorand blockchain.
  • Aptos Devnetaptos_devnet
    The Aptos network on the Aptos blockchain.
  • Arbitrum Goerliarbitrum_goerli
    The Goerli network on the Arbitrum blockchain.
  • Arbitrum Mainnetarbitrum_mainnet
    The Mainnet network on the Arbitrum blockchain.
  • Arbitrum Rinkebyarbitrum_rinkeby
    The Rinkeby network on the Arbitrum blockchain. This network has been deprecated on October 5, 2022.
  • Avalanche C-Chain Fujiavalanche_fuji
    The Fuji network on the Avalanche C-Chain blockchain.
  • Avalanche C-Chain Mainnetavalanche_mainnet
    The Mainnet network on the Avalanche C-Chain blockchain.
  • BNB Smart Chain Mainnetbnbsmartchain_mainnet
    The Mainnet network on the BNB Smart Chain blockchain.
  • BNB Smart Chain Testnetbnbsmartchain_testnet
    The Testnet network on the BNB Smart Chain blockchain.
  • Bitcoin Mainnetbitcoin_mainnet
    The Mainnet network on the Bitcoin blockchain.
  • Bitcoin Testnetbitcoin_testnet
    The Testnet network on the Bitcoin blockchain.
  • Boba Mainnetboba_mainnet
    The Mainnet network on the Boba blockchain.
  • Boba Testnetboba_testnet
    The Testnet network on the Boba blockchain.
  • Celo Alfajorescelo_alfajores
    The Alfajores network on the Celo blockchain.
  • Celo Baklavacelo_baklava
    The Baklava network on the Celo blockchain.
  • Celo Mainnetcelo_mainnet
    The Mainnet network on the Celo blockchain.
  • Celo Mainnetcelo_mainnet
    The Mainnet network on the Celo blockchain.
  • Cronos Mainnetcronos_mainnet
    The Mainnet network on the Cronos blockchain.
  • Cronos Testnetcronos_testnet
    The Testnet network on the Cronos blockchain.
  • Ethereum Goerliethereum_goerli
    The Goerli network on the Ethereum blockchain.
  • Ethereum Kovanethereum_kovan
    The Kovan network on the Ethereum blockchain. This network has been deprecated on October 5, 2022.
  • Ethereum Mainnetethereum_mainnet
    The Mainnet network on the Ethereum blockchain.
  • Ethereum Rinkebyethereum_rinkeby
    The Rinkeby network on the Ethereum blockchain. This network has been deprecated on October 5, 2022.
  • Ethereum Ropstenethereum_ropsten
    The Ropsten network on the Ethereum blockchain. This network has been deprecated on October 5, 2022.
  • Ethereum Sepoliaethereum_sepolia
    The Sepolia network on the Ethereum blockchain.
  • Evmos Mainnetevmos_mainnet
    The Mainnet network on the Evmos blockchain.
  • Evmos Testnetevmos_testnet
    The Testnet network on the Evmos blockchain.
  • Fantom Mainnetfantom_mainnet
    The Mainnet network on the Fantom blockchain.
  • Fantom Testnetfantom_testnet
    The Testnet network on the Fantom blockchain.
  • Flow Mainnetflow_mainnet
    The Mainnet network on the Flow blockchain.
  • Flow Testnetflow_testnet
    The Testnet network on the Flow blockchain.
  • Fuel Beta-1fuel_beta1
    The Beta-1 network on the Fuel blockchain.
  • Fuel Beta-2fuel_beta2
    The Beta-2 network on the Fuel blockchain.
  • Harmony Mainnetharmony_mainnet
    The Mainnet network on the Harmony blockchain.
  • Harmony Testnetharmony_testnet
    The Testnet network on the Harmony blockchain.
  • Kusama Mainnetkusama_mainnet
    The Mainnet network on the Kusama blockchain.
  • Moonbeam Mainnetmoonbeam_mainnet
    The Mainnet network on the Moonbeam blockchain.
  • Moonbeam Testnetmoonbeam_testnet
    The Testnet network on the Moonbeam blockchain.
  • Moonriver Mainnetmoonriver_mainnet
    The Mainnet network on the Moonriver blockchain.
  • Optimism Goerlioptimism_goerli
    The Goerli network on the Optimism blockchain.
  • Optimism Kovanoptimism_kovan
    The Kovan network on the Optimism blockchain. This network has been deprecated on October 5, 2022.
  • Optimism Mainnetoptimism_mainnet
    The Mainnet network on the Optimism blockchain.
  • Polkadot Mainnetpolkadot_mainnet
    The Mainnet network on the Polkadot blockchain.
  • Polkadot Rococopolkadot_rococo
    The Rococo network on the Polkadot blockchain.
  • Polkadot Westendpolkadot_westend
    The Westend network on the Polkadot blockchain.
  • Polygon Mainnetpolygon_mainnet
    The Mainnet network on the Polygon blockchain.
  • Polygon Mumbaipolygon_mumbai
    The Mumbai network on the Polygon blockchain.
  • Skale EthSF Naosskale_hackathon_complex_easy_naos
    The EthSF Naos network on the Skale blockchain.
  • Skale EthSF Veraskale_hackathon_content_live_vega
    The EthSF Vera network on the Skale blockchain.
  • Solana Devnetsolana_devnet
    The Devnet network on the Solana blockchain.
  • Solana Mainnet Betasolana_mainnet_beta
    The Mainnet Beta network on the Solana blockchain.
  • Solana Testnetsolana_testnet
    The Testnet network on the Solana blockchain.
  • Stacks Mainnetstacks_mainnet
    The Mainnet network on the Stacks blockchain.
  • Stacks Testnetstacks_testnet
    The Testnet network on the Stacks blockchain.
  • Sui Devnetsui_devnet
    The Devnet network on the Sui blockchain.
  • Sui Testnetsui_testnet
    The Testnet network on the Sui blockchain.
  • Terra Mainnetterra_mainnet
    The Mainnet network on the Terra blockchain.
  • Terra Classicterra_classic
    The Classic network on the Terra blockchain.
  • Terra Testnetterra_testnet
    The Testnet network on the Terra blockchain.
  • zkSync Mainnetzksync_mainnet
    The Mainnet network on the zkSync blockchain.
  • zkSync Testnetzksync_testnet
    The Testnet network on the zkSync blockchain.

The network object

Attributes
  • idstring
    The unique identifier for the object.
  • chainChain
    Object of the chain this network is on.
  • mainnetboolean
    Whether the network is the mainnet.
  • namestring
    The name of the network.
Object
interface Network {
  id: string;
  object: string;
  chain: Chain;
  mainnet: boolean;
  name: string;
}
Example
{
  "id": "ethereum_goerli",
  "object": "network",
  "chain": {
    "id": "ethereum"
  },
  "mainnet": false,
  "name": "Ethereum Goerli"
}

Retrieve a network

Retrieves the network with the given ID.

GET /v1/networks/:id
const network = await triangle.networks.retrieve(
  "ethereum_goerli"
);
Response
{
  "id": "ethereum_goerli",
  "object": "network",
  "chain": {
    "id": "ethereum"
  },
  "mainnet": false,
  "name": "Ethereum Goerli"
}

List all networks

Returns a list of all the networks supported on Triangle.

GET /v1/networks
const networks = await triangle.networks.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "ethereum_goerli",
      "object": "network",
      "chain": {
        "id": "ethereum"
      },
      "mainnet": false,
      "name": "Ethereum Goerli"
    }
  ]
}

Vaults

This is an object representing a vault.

A vault is used to generate keys to create a group of wallets. You can think of this just like how Ledger or any other consumer wallet generates a single key that is used to create many wallets.

The vault object

Attributes
  • idstring
    The unique identifier for the object.
  • namestring
    The name of the vault.
Object
interface Vault {
  id: string;
  object: string;
  name: string;
}
Example
{
  "id": "vlt_abc123",
  "object": "vault",
  "name": "My Vault"
}

Create a vault

Creates a new vault.

Body
  • namestring
    The name of the vault.
Returns
  • Returns the vault object.
POST /v1/vaults
const vault = await triangle.vaults.create({
  name: "My Vault",
});
Response
{
  "id": "vlt_abc123",
  "object": "vault",
  "name": "My Vault"
}

Retrieve a vault

Retrieves the vault with the given ID.

GET /v1/vaults/:id
const vault = await triangle.vaults.retrieve(
  "vlt_abc123"
);
Response
{
  "id": "vlt_abc123",
  "object": "vault",
  "name": "My Vault"
}

List all vaults

Returns a list of your vaults.

GET /v1/vaults
const vaults = await triangle.vaults.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "vlt_abc123",
      "object": "vault",
      "name": "My Vault"
    }
  ]
}

Wallets

This is an object representing a wallet in a vault.

A wallet is an just like an externally-owned account (EOA). You can use it just like any other wallet to sign and send any transaction to the network.

The wallet object

Attributes
  • idstring
    The unique identifier for the object.
  • addressstring
    The address of the wallet.
  • namestring
    The name of the wallet.
  • networkNetwork
    The network the wallet is on.
  • vaultVault
    Object of the vault this wallet is in.
Object
interface Wallet {
  id: string;
  object: string;
  address: string;
  name: string;
  network: Network;
  vault: Vault;
}
Example
{
  "id": "wlt_abc123",
  "object": "wallet",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Wallet",
  "network": {
    "id": "ethereum_goerli"
  },
  "vault": {
    "id": "vlt_abc123"
  }
}

Create a wallet

Creates a new wallet in the given vault.

Body
  • namestring
    The name of the wallet.
  • networkstring
    The ID of the network to create this wallet is on.
  • vaultstring
    The ID of the vault to create this wallet is in.
Returns
  • Returns the wallet object.
POST /v1/wallets
const wallet = await triangle.wallets.create({
  name: "My Wallet",
  network: "ethereum_goerli",
  vault: "vlt_abc123",
});
Response
{
  "id": "wlt_abc123",
  "object": "wallet",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Wallet",
  "network": {
    "id": "ethereum_goerli"
  },
  "vault": {
    "id": "vlt_abc123"
  }
}

Retrieve a wallet

Retrieves the wallet with the given ID.

GET /v1/wallets/:id
const wallet = await triangle.wallets.retrieve(
  "wlt_abc123"
);
Response
{
  "id": "wlt_abc123",
  "object": "wallet",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Wallet",
  "network": {
    "id": "ethereum_goerli"
  },
  "vault": {
    "id": "vlt_abc123"
  }
}

List all wallets

Returns a list of your wallets.

Parameters
  • vaultstring, optional
    Only return wallets for the vault specified by this vault ID.
GET /v1/wallets
const wallets = await triangle.wallets.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "wlt_abc123",
      "object": "wallet",
      "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
      "name": "My Wallet",
      "network": {
        "id": "ethereum_goerli"
      },
      "vault": {
        "id": "vlt_abc123"
      }
    }
  ]
}

Retrieve a wallet's balance

Retrieves the balance of the native currency in the wallet.

GET /v1/wallets/:id/balance
const balance = await triangle.wallets.balance(
  "wlt_abc123"
);
Response
{
  "balance": "1.23",
  "logo_url": "https://...",
  "name": "Ethereum",
  "symbol": "ETH"
}

Send native currency

Sends the native currency.

Body
  • amountstring
    The amount of the native currency.
  • tostring
    The address to send the native currency to.
Returns
  • Returns an object containing the transaction hash.
POST /v1/wallets/:id/send
const transaction = await triangle.wallets.send(
  "wlt_abc123",
  {
    amount: "0.123",
    to: "0x...",
  }
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

List a wallet's NFTs

Returns a list of the NFTs in the wallet.

GET /v1/wallets/:id/nfts
const nfts = await triangle.wallets.nfts(
  "wlt_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "contract": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
      "image_url": "https://...",
      "name": "Bored Ape Yacht Club #123",
      "symbol": "BAYC",
      "token_id": "123",
      "type": "erc721"
    }
  ]
}

Send an NFT

Sends an NFT.

Body
  • amountstring, optional, default "1"
    The amount of the NFT. This is only applicable to ERC-1155 NFTs as described in the EIP-1155 specification.
  • contractstring
    The contract address of the NFT.
  • tostring
    The address to send the NFT to.
  • token_idstring
    The token ID of the NFT.
Returns
  • Returns an object containing the transaction hash.
POST /v1/wallets/:id/send_nft
const transaction = await triangle.wallets.sendNft(
  "wlt_abc123",
  {
    contract: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
    to: "0x...",
    token_id: "123",
  }
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

List a wallet's tokens

Returns a list of the tokens in the wallet.

GET /v1/wallets/:id/tokens
const tokens = await triangle.wallets.tokens(
  "wlt_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "contract": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
      "balance": "1.23",
      "logo_url": "https://...",
      "name": "Dai",
      "symbol": "DAI"
    }
  ]
}

Send a token

Sends a token.

Body
  • amountstring
    The amount of the token.
  • contractstring
    The contract address of the token.
  • tostring
    The address to send the token to.
Returns
  • Returns an object containing the transaction hash.
POST /v1/wallets/:id/send_token
const transaction = await triangle.wallets.sendToken(
  "wlt_abc123",
  {
    amount: "0.123",
    contract: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
    to: "0x...",
  }
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Send a transaction

Signs a transaction using the wallet and broadcasts it to the blockchain.

Body
  • serializedstring
    The serialized transaction to send using this wallet.
Returns
  • Returns an object containing the transaction hash.
POST /v1/wallets/:id/send_transaction
const transaction = await triangle.wallets.sendTransaction(
  "wlt_abc123",
  { serialized: "..." }
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "raw": "...",
  "serialized": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Sign a transaction

Signs a transaction using the wallet.

Body
  • serializedstring
    The serialized transaction to sign using this wallet.
Returns
  • Returns an object containing the raw transaction.
POST /v1/wallets/:id/sign_transaction
const transaction = await triangle.wallets.signTransaction(
  "wlt_abc123",
  { serialized: "..." }
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "raw": "...",
  "serialized": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Send a raw transaction

Broadcasts a signed transaction to the blockchain.

Body
  • transactionstring
    The ID of the signed transaction to send.
Returns
  • Returns an object containing the transaction hash.
POST /v1/wallets/:id/send_raw_transaction
const transaction = await triangle.wallets.sendRawTransaction(
  "wlt_abc123",
  { transaction: "txn_abc123" }
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "raw": "...",
  "serialized": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Sign a message

Signs a message using the wallet.

Signing messages can be used for various methods of authentication and off-chain operations (can be put on-chain if necessary). It allows you to verify that a piece of data was signed by a specific wallet and is used as a way to prove that a wallet approved a message. Signing a message does not require interacting with the blockchain network.

Body
  • messagestring
    The message to sign using this wallet.
Returns
  • Returns an object containing the signature.
POST /v1/wallets/:id/sign_message
const message = await triangle.wallets.signMessage(
  "wlt_abc123",
  { message: "hello world" }
);
Response
{
  "id": "msg_abc123",
  "object": "message",
  "message": "hello world",
  "signature": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Sign typed data

Signs typed data using the wallet.

This follows the EIP-712 specification and is only supported on EVM-compatible chains.

Body
  • encodedstring
    The encoded typed data to sign.
Returns
  • Returns an object containing the signature.
POST /v1/wallets/:id/sign_typed_data
const message = await triangle.wallets.signTypedData(
  "wlt_abc123",
  { encoded: "0x..." }
);
Response
{
  "id": "msg_abc123",
  "object": "message",
  "encoded": "0x...",
  "signature": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Transactions

This is an object representing a transaction from a wallet.

The transaction object

Attributes
  • idstring
    The unique identifier for the object.
  • hashstring
    The transaction hash.
  • serializedstring
    The serialized transaction.
  • walletWallet
    The wallet this transaction was from.
Object
interface Transaction {
  id: string;
  object: string;
  hash: string;
  serialized: string;
  wallet: Wallet;
}
Example
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "raw": "...",
  "serialized": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Retrieve a transaction

Retrieves the transaction with the given ID.

GET /v1/transactions/:id
const transaction = await triangle.transactions.retrieve(
  "txn_abc123"
);
Response
{
  "id": "txn_abc123",
  "object": "transaction",
  "hash": "...",
  "raw": "...",
  "serialized": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

List all transactions

Returns a list of your transactions.

Parameters
  • walletstring, optional
    Only return transactions for the wallet specified by this wallet ID.
GET /v1/transactions
const transactions = await triangle.transactions.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "txn_abc123",
      "object": "transaction",
      "hash": "...",
      "raw": "...",
      "serialized": "...",
      "wallet": {
        "id": "wlt_abc123"
      }
    }
  ]
}

Messages

This is an object representing a message from a wallet.

The message object

Attributes
  • idstring
    The unique identifier for the object.
  • messagestring
    The message.
  • signaturestring
    The signature of the message.
  • walletWallet
    The wallet this transaction was from.
Object
interface Message {
  id: string;
  object: string;
  message: string;
  signature: string;
  wallet: Wallet;
}
Example
{
  "id": "msg_abc123",
  "object": "message",
  "message": "hello world",
  "signature": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

Retrieve a message

Retrieves the message with the given ID.

GET /v1/messages/:id
const message = await triangle.messages.retrieve(
  "msg_abc123"
);
Response
{
  "id": "msg_abc123",
  "object": "message",
  "message": "hello world",
  "signature": "...",
  "wallet": {
    "id": "wlt_abc123"
  }
}

List all messages

Returns a list of your messages.

Parameters
  • walletstring, optional
    Only return messages for the wallet specified by this wallet ID.
GET /v1/messages
const messages = await triangle.messages.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "msg_abc123",
      "object": "message",
      "message": "hello world",
      "signature": "...",
      "wallet": {
        "id": "wlt_abc123"
      }
    }
  ]
}

Accounts

This is an object representing an account.

The account object

Attributes
  • idstring
    The unique identifier for the object.
  • addressstring
    The address of the account.
  • namestring
    The name of the account.
  • networkNetwork
    The network the account is on.
Object
interface Account {
  id: string;
  object: string;
  address: string;
  name: string;
  network: Network;
}
Example
{
  "id": "acct_abc123",
  "object": "address",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Account",
  "network": {
    "id": "ethereum_goerli"
  }
}

Add an account

Adds a new account.

Body
  • addressstring
    The address of the account.
  • namestring
    The name of the account.
  • networkstring
    The ID of the network the account is on.
Returns
  • Returns the account object.
POST /v1/accounts
const account = await triangle.accounts.add({
  address: "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  name: "My Account",
  network: "ethereum_goerli",
});
Response
{
  "id": "acct_abc123",
  "object": "address",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Account",
  "network": {
    "id": "ethereum_goerli"
  }
}

Retrieve an account

Retrieves the account with the given ID.

GET /v1/accounts/:id
const account = await triangle.accounts.retrieve(
  "acct_abc123"
);
Response
{
  "id": "acct_abc123",
  "object": "account",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Account",
  "network": {
    "id": "ethereum_goerli"
  }
}

List all accounts

Returns a list of your accounts.

GET /v1/accounts
const accounts = await triangle.accounts.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "acct_abc123",
      "object": "account",
      "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
      "name": "My Account",
      "network": {
        "id": "ethereum_goerli"
      }
    }
  ]
}

Retrieve an account's balance

Retrieves the balance of the native currency in the account.

GET /v1/accounts/:id/balance
const balance = await triangle.accounts.balance(
  "acct_abc123"
);
Response
{
  "balance": "1.23",
  "logo_url": "https://...",
  "name": "Ethereum",
  "symbol": "ETH"
}

List an account's NFTs

Returns a list of the NFTs in the account.

GET /v1/accounts/:id/nfts
const nfts = await triangle.accounts.nfts(
  "acct_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "contract": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
      "image_url": "https://...",
      "name": "Bored Ape Yacht Club #123",
      "symbol": "BAYC",
      "token_id": "123",
      "type": "erc721"
    }
  ]
}

List an account's tokens

Returns a list of the tokens in the account.

GET /v1/accounts/:id/tokens
const tokens = await triangle.accounts.tokens(
  "acct_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "contract": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
      "balance": "1.23",
      "logo_url": "https://...",
      "name": "Dai",
      "symbol": "DAI"
    }
  ]
}

List an account's transactions

Returns a list of the transactions from and to the account.

GET /v1/accounts/:id/transactions
const transactions = await triangle.accounts.transactions(
  "acct_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "block": 123,
      "hash": "0x..."
    }
  ]
}

Contracts

This is an object representing a contract.

The contract object

Attributes
  • idstring
    The unique identifier for the object.
  • addressstring
    The address of the contract.
  • namestring
    The name of the contract.
  • networkNetwork
    The network the contract is on.
Object
interface Contract {
  id: string;
  object: string;
  address: string;
  name: string;
  network: string;
}
Example
{
  "id": "cntr_abc123",
  "object": "contract",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Contract",
  "network": {
    "id": "ethereum_goerli"
  }
}

Add a contract

Adds a new contract.

Body
  • addressstring
    The address of the contract.
  • namestring
    The name of the contract.
  • networkstring
    The ID of the network the contract is on.
Returns
  • Returns the contract object.
POST /v1/contracts
const contract = await triangle.contracts.add({
  name: "My Contract",
});
Response
{
  "id": "cntr_abc123",
  "object": "contract",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Contract",
  "network": {
    "id": "ethereum_goerli"
  }
}

Retrieve a contract

Retrieves the contract with the given ID.

GET /v1/contracts/:id
const contract = await triangle.contracts.retrieve(
  "cntr_abc123"
);
Response
{
  "id": "cntr_abc123",
  "object": "contract",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "name": "My Contract",
  "network": {
    "id": "ethereum_goerli"
  }
}

List all contracts

Returns a list of your contracts.

GET /v1/contracts
const contracts = await triangle.contracts.list();
Response
{
  "object": "list",
  "items": [
    {
      "id": "cntr_abc123",
      "object": "contract",
      "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
      "name": "My Contract",
      "network": {
        "id": "ethereum_goerli"
      }
    }
  ]
}

Retrieve a contract's balance

Retrieves the balance of the native currency in the contract.

GET /v1/contracts/:id/balance
const balance = await triangle.contracts.balance(
  "cntr_abc123"
);
Response
{
  "balance": "1.23",
  "logo_url": "https://...",
  "name": "Ethereum",
  "symbol": "ETH"
}

List a contract's NFTs

Returns a list of the NFTs in the contract.

GET /v1/contracts/:id/nfts
const nfts = await triangle.contracts.nfts(
  "cntr_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "contract": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
      "image_url": "https://...",
      "name": "Bored Ape Yacht Club #123",
      "symbol": "BAYC",
      "token_id": "123",
      "type": "erc721"
    }
  ]
}

List a contract's tokens

Returns a list of the tokens in the contract.

GET /v1/contracts/:id/tokens
const tokens = await triangle.contracts.tokens(
  "cntr_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "contract": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
      "balance": "1.23",
      "logo_url": "https://...",
      "name": "Dai",
      "symbol": "DAI"
    }
  ]
}

List a contract's transactions

Returns a list of the transactions from and to the contract.

GET /v1/contracts/:id/transactions
const transactions = await triangle.contracts.transactions(
  "cntr_abc123"
);
Response
{
  "object": "list",
  "items": [
    {
      "block": 123,
      "hash": "0x..."
    }
  ]
}

Addresses

This is an object representing an address.

An address is a way to reference a wallet that was created outside of Triangle. This gives you read-only controls to make it easy for you to request and receive data about any address on any blockchain.

The address object

Attributes
  • addressstring
    The address.
  • networkNetwork
    The network the address is on.
Object
interface Address {
  object: string;
  address: string;
  network: Network;
}
Example
{
  "object": "address",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "network": {
    "id": "ethereum_goerli"
  }
}

Retrieve an address

Retrieves the address with the given address.

Parameters
  • networkstring
    The ID of the network the address is on.
GET /v1/addresses/:address
const address = await triangle.addresses.retrieve(
  "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "address",
  "address": "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  "network": {
    "id": "ethereum_goerli"
  }
}

Retrieve an address's balance

Retrieves the balance of the native currency in the address.

Parameters
  • networkstring
    The ID of the network the balance is on.
GET /v1/addresses/:address/balance
const balance = await triangle.addresses.balance(
  "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "balance",
  "balance": "1.23",
  "logo_url": "https://...",
  "name": "Ethereum",
  "symbol": "ETH"
}

List an address's NFTs

Returns a list of the NFTs in the address.

Parameters
  • networkstring
    The ID of the network the NFTs are on.
GET /v1/addresses/:address/nfts
const nfts = await triangle.addresses.nfts(
  "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "list",
  "items": [
    {
      "object": "nft",
      "contract": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
      "image_url": "https://...",
      "name": "Bored Ape Yacht Club #123",
      "symbol": "BAYC",
      "token_id": "123",
      "type": "erc721"
    }
  ]
}

List an address's tokens

Returns a list of the tokens in the address.

Parameters
  • networkstring
    The ID of the network the tokens are on.
GET /v1/addresses/:address/tokens
const tokens = await triangle.addresses.tokens(
  "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "list",
  "items": [
    {
      "object": "token",
      "contract": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
      "balance": "1.23",
      "logo_url": "https://...",
      "name": "Dai",
      "symbol": "DAI"
    }
  ]
}

List an address's txs

Returns a list of the txs from and to the address.

Parameters
  • networkstring
    The ID of the network the txs are on.
GET /v1/addresses/:address/txs
const txs = await triangle.addresses.txs(
  "0xA1B2c3d4e5F6A7B8c9D0E1F2A3b4C5D6E7f8A9B0",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "list",
  "items": [
    {
      "object": "tx",
      "block": {
        "hash": "..."
      },
      "hash": "..."
    }
  ]
}

Blocks

This is an object representing a block.

The block object

Attributes
  • hashstring
    The block hash.
  • numbernumber
    The block number.
  • networkNetwork
    The network the block is on.
Object
interface Block {
  object: string;
  hash: string;
  number: number;
  network: Network;
}
Example
{
  "object": "block",
  "hash": "...",
  "number": "...",
  "network": {
    "id": "ethereum_goerli"
  }
}

Retrieve a block

Retrieves the block with the given hash or number.

Parameters
  • networkstring
    The ID of the network the block is on.
GET /v1/blocks/:hash_or_number
const block = await triangle.blocks.retrieve(
  "...",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "block",
  "hash": "...",
  "number": "...",
  "network": {
    "id": "ethereum_goerli"
  }
}

List all blocks

Returns a list of the latest blocks.

Parameters
  • networkstring
    The ID of the network the blocks are on.
GET /v1/blocks
const blocks = await triangle.blocks.list({
  network: "ethereum_goerli",
});
Response
{
  "object": "list",
  "items": [
    {
      "object": "block",
      "hash": "...",
      "number": "...",
      "network": {
        "id": "ethereum_goerli"
      }
    }
  ]
}

Txs

This is an object representing a tx.

The tx object

Attributes
  • blockBlock
    The block the transaction is in.
  • hashstring
    The transaction hash.
Object
interface Tx {
  object: string;
  block: Block;
  hash: string;
}
Example
{
  "object": "tx",
  "block": {
    "hash": "..."
  },
  "hash": "..."
}

Retrieve a tx

Retrieves the tx with the given hash.

Parameters
  • networkstring
    The ID of the network the tx is on.
GET /v1/txs/:hash
const tx = await triangle.txs.retrieve(
  "...",
  { network: "ethereum_goerli" }
);
Response
{
  "object": "tx",
  "block": {
    "hash": "..."
  },
  "hash": "..."
}

List all txs

Returns a list of the latest txs.

Parameters
  • blockstring, optional
    Only return txs for the block specified by this block hash or number.
  • networkstring
    The ID of the network the txs are on.
GET /v1/txs
const txs = await triangle.txs.list({
  network: "ethereum_goerli",
});
Response
{
  "object": "list",
  "items": [
    {
      "object": "tx",
      "block": {
        "hash": "..."
      },
      "hash": "..."
    }
  ]
}