Kana Perps Typescript REST API
1. Get Market Info
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getMarketInfo
- Method: - GET
- Query Parameters: - marketId(Required) - The ID of the market you want information about.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getMarketInfo?marketId=501Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Market information fetched successfully",
  "data": [
    {
      "__variant__": "V1",
      "base_decimals": 8,
      "base_name": "APT/USDC",
      "counter": "17",
      "creator": "0xb61d7b57333abf8ac036e752f19d0ba0c4baa5404db1cbf868c57dac3628f2bf",
      "lot_size": "100000",
      "maintenance_margin": "250",
      "market_address": "0xfd8d58fdd05dd9d0442a9d555a4f8ed310112eb7d1c297307038a650136e207b",
      "market_id": "501",
      "max_leverage": "20",
      "max_lots": "150000000",
      "min_lots": "500",
      "quote_decimals": 6,
      "quote_precision": 3,
      "tick_size": "1"
    }
  ]
}Example Code to Fetch Market Information:
The following TypeScript/Node.js script demonstrates how to call the Get Market Info API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getMarketInfo';
    const params = {
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getMarketInfo: ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});2. Get Wallet Account Balance
- Method: - GET
- Query Parameters: - userAddress(Required) - The wallet address for which the account balance is being fetched.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getWalletAccountBalance?userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched wallet account balance successfully",
  "data": "16391.60"
}Example Code to Fetch Wallet Account Balance Information:
The following TypeScript/Node.js script demonstrates how to call the Get Wallet Account Balance API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getWalletAccountBalance';
    const params = {
        userAddress: 'your_wallet_address'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getWalletAccountBalance: ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});3. Get Profile Balance Snapshot
- Method: - GET
- Query Parameters: - userAddress(Required) - The wallet address for which the account balance is being fetched.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getProfileBalanceSnpashot?userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Profile balance snapshot fetched successfully",
  "data": "44.321972"
}Example Code to Fetch Trading Account Balance Information:
The following TypeScript/Node.js script demonstrates how to call the Get Trading Account Balance API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getTradingAccountBalance';
    const params = {
        userAddress: 'your_wallet_address'
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    console.log("getTradingAccountBalance: ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});4. Deposit
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/deposit
- Method: - GET
- Query Parameters: - amount(Required) - The amount of the quote coin to deposit.
- userAddress(Required) - The address of the user making the deposit.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/deposit?userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770&amount=50000000Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Deposit payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::deposit",
    "functionArguments": [
      "0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770",
      50000000
    ],
    "typeArguments": []
  }
}Example Code to Depsoit a quote coin:
The following TypeScript/Node.js script demonstrates how to call the Get Deposit API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/deposit';
    const params = {
        userAddress: 'your_address',
        amount: 'your_amount'
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});5. Withdraw Specific Market
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/withdrawSpecifiMarket
- Method: - GET
- Query Parameters: - marketId(Required) - The ID of the market you want to withdraw.
- amount(Required) - The amount of the quote coin to withdraw.
- userAddress(Required) - The address of the user making the withdraw.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/withdrawSpecifiMarket?marketId=501&userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770&amount=50Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Withdraw specific market payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::withdraw_specific_market",
    "functionArguments": [
      "0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770",
      "501",
      50000000
    ],
    "typeArguments": []
  }
}Example Code to Withdraw a quote coin:
The following TypeScript/Node.js script demonstrates how to call the Get Withdraw API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/withdrawSpecifiMarket';
    const params = {
        userAddress: 'your_address',
        marketId: 'your_market_id',
        amount: 'your_amount'
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});6. Place Limit Order
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/placeLimitOrder
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market where the limit order will be placed. 
- tradeSide (Required) - Indicates the trade side: - truefor the long side.
- falsefor the short side.
 
- direction (Required) - Indicates the direction of the trade: - falseto open a position.
- trueto close a position.
 
- size (Required) - The size of the order. 
- price (Required) - The price at which the order is to be placed. 
- leverage (Required) - The leverage to be used for the order. 
- restriction - Specifies the type of order restriction. It is an optional parameter with a default value of - 0. Possible values are:- 0-- NO_RESTRICTION: Optionally fill as a taker, then post to the book as a maker.
- 1-- FILL_OR_ABORT: Abort if any size posts as a maker (only fill).
- 3-- POST_OR_ABORT: Abort if any size fills as a taker (only post).
- If - restrictionis not provided, it defaults to- 0. It can either be a number or left undefined.
 
- takeProfit - The take profit value is optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
- stopLoss - The stop loss value is also optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/placeLimitOrder/?marketId=501&tradeSide=true&direction=false&size=10000&price=3000&leverage=3Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Limit Order payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::place_limit_order",
    "functionArguments": [
      "501",
      "true",
      "false",
      1000000,
      8000000,
      "5",
      0,
      0,
      0
    ],
    "typeArguments": []
  }
}Example Code to Place a limit order:
The following TypeScript/Node.js script demonstrates how to call the Get Place Limit Order API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/limitOrder';
    const params = {
        marketId: 'your_market_id',
        tradeSide: 'your_trade_side',
        direction: 'your_direction',
        size: 'your_size',
        price: 'your_price',
        leverage: 'your_leverage',
        restriction: 'your_restriction', //(Optional, Default: 0)
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});7. Place Market Order
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/placeMarketOrder
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market where the limit order will be placed. 
- tradeSide (Required) - Indicates the trade side: - truefor the long side.
- falsefor the short side.
 
- direction (Required) - Indicates the direction of the trade: - falseto open a position.
- trueto close a position.
 
- size (Required) - The size of the order. 
- leverage (Required) - The leverage to be used for the order. 
- takeProfit - The take profit value is optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
- stopLoss - The stop loss value is also optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/placeMarketOrder?marketId=66&tradeSide=false&direction=true&size=1000&leverage=20Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Market Order payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::place_market_order",
    "functionArguments": [
      "501",
      "true",
      "false",
      1000000,
      "5",
      0,
      0
    ],
    "typeArguments": []
  }
}Example Code to Place a market order:
The following TypeScript/Node.js script demonstrates how to call the Get Place Market Order API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/marketOrder';
    const params = {
        marketId: 'your_market_id',
        tradeSide: 'your_trade_side',
        direction: 'your_direction',
        size: 'your_size',
        leverage: 'your_leverage',
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});8. Cancel Multiple Orders
- Endpoint URL: - htps://perps-tradeapi.kanalabs.io/cancelMultipleOrders
- Method: - POST
- Request Body: - marketId: The ID of the market for which the orders will be canceled. 
- orderIds: A list of order IDs to cancel. 
- cancelTradeSides: The sides of the orders to cancel (true for long, false for short). 
 
Example Request:
{
  "marketId": 66,
  "cancelOrderIds": ["1077898597726583798162207", "1077880153515406921884445"],
  "orderSides": [true, false]
}Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Cancel Multiple Orders payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::cancel_multiple_orders",
    "functionArguments": [
      501,
      [
        "1077898597726583798162207",
        "1077880153515406921884445"
      ],
      [
        true,
        false
      ]
    ],
    "typeArguments": []
  }
}Example Code to Cancel multiple orders:
The following TypeScript/Node.js script demonstrates how to call the Post Cancel Multiple Orders API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/cancelMultipleOrders';
    const params = {
        marketId: 'your_market_id',
        cancelOrderIds: ['your_cancel_order_ids'],
        orderSides: ['your_order_sides']
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});8. Place Multiple Orders
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/placeMultipleOrders
- Method: - POST
Request Body :
- marketId (Required) - The ID of the market where the orders will be placed. 
- orderTypes (Required) - An array of order types for each order: - true for limit orders. 
- false for market orders. 
 
- tradeSides (Required) - An array indicating the trade sides for each order: - true for long positions. 
- false for short positions. 
 
- directions (Required) - An array indicating the direction of each trade: - false to open a position. 
- true to close a position. 
 
- sizes (Required) - An array of sizes for each order. 
- leverages (Required) - An array of leverages for each order. 
- prices (Required) - An array of prices at which each order is to be placed. 
- restriction - Specifies the type of order restriction. It is an optional parameter with a default value of - 0. Possible values are:- 0-- NO_RESTRICTION: Optionally fill as a taker, then post to the book as a maker.
- 1-- FILL_OR_ABORT: Abort if any size posts as a maker (only fill).
- 3-- POST_OR_ABORT: Abort if any size fills as a taker (only post).
- If - restrictionis not provided, it defaults to- 0. It can either be a number or left undefined.
 
- takeProfits - The take profit value is optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
- stopLosses - The stop loss value is also optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
Example Request:
{
  "marketId": 66,
  "orderTypes": [true, true],
  "tradeSides": [true, true],
  "directions": [true, true],
  "sizes": [1000, 1000],
  "prices": [1000, 1000],
  "leverages": [2, 2]
}Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Multiple Orders payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::place_multiple_orders",
    "functionArguments": [
      501,
      [
        true,
        true
      ],
      [
        true,
        true
      ],
      [
        true,
        true
      ],
      [
        1000,
        1000
      ],
      [
        4670,
        6780
      ],
      [
        2,
        2
      ],
      [
        0,
        0
      ],
      [
        4600
      ],
      [
        0,
        0
      ]
    ],
    "typeArguments": []
  }
}Example Code to Place a multiple orders:
The following TypeScript/Node.js script demonstrates how to call the Get Place Multiple Orders API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/placeMultipleOrders';
    const params = {
        marketId: 'your_market_id',
        orderTypes: ['your_order_types'],
        tradeSides: ['your_trade_sides'],
        directions: ['your_directions'],
        sizes: ['your_sizes'],
        prices: ['your_prices'],
        leverage: ['your_leverages']
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});9. Cancel and Place Multiple Orders
- Method: - POST
Request Body :
- marketId (Required) - The ID of the market where the orders will be placed. 
- cancelOrderIds (Required) - An array of strings representing the IDs of the orders to be canceled. 
- orderSides (Required) - An array indicating the sides of the orders being canceled: - truefor long sides.
- falsefor short sides.
 
- orderTypes (Required) - An array of order types for each order: - true for limit orders. 
- false for market orders. 
 
- tradeSides (Required) - An array indicating the trade sides for each order: - true for long positions. 
- false for short positions. 
 
- directions (Required) - An array indicating the direction of each trade: - false to open a position. 
- true to close a position. 
 
- sizes (Required) - An array of sizes for each order. 
- leverages (Required) - An array of leverages for each order. 
- prices (Required) - An array of prices at which each order is to be placed. 
- restriction - Specifies the type of order restriction. It is an optional parameter with a default value of - 0. Possible values are:- 0-- NO_RESTRICTION: Optionally fill as a taker, then post to the book as a maker.
- 1-- FILL_OR_ABORT: Abort if any size posts as a maker (only fill).
- 3-- POST_OR_ABORT: Abort if any size fills as a taker (only post).
- If - restrictionis not provided, it defaults to- 0. It can either be a number or left undefined
 
- takeProfits - The take profit value is optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
- stopLosses - The stop loss value is also optional. If not provided, it defaults to - 0. It can either be a number or left undefined.
Example Request:
{
  "marketId": 66,
  "cancelOrderIds": [23434565434567", "454345665456],
  "orderSides": [true, true],
  "orderTypes": [true, true],
  "tradeSides": [true, false],
  "directions": [true, true],
  "sizes": [1000, 2000],
  "prices": [5000, 6000],
  "leverages": [2, 2]
}Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Cancel and place multiple Orders payload has been built successfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::cancel_and_place_multiple_orders",
    "functionArguments": [
      501,
      [
        "23434565434567",
        "454345665456"
      ],
      [
        "true",
        "true"
      ],
      [
        true,
        true
      ],
      [
        true,
        false
      ],
      [
        true,
        true
      ],
      [
        1000,
        2000
      ],
      [
        5000,
        6000
      ],
      [
        2,
        2
      ],
      [
        0,
        0
      ],
      [
        0,
        0
      ],
      [
        0,
        0
      ]
    ],
    "typeArguments": []
  }
}Example Code to cancel and Place a multiple orders:
The following TypeScript/Node.js script demonstrates how to call the Get Cancel And Place Multiple Orders API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/cancelAndPlaceMultipleOrders';
    const params = {
        marketId: 'your_market_id',
        cancelOrderIds: ['your_order_ids'],
        orderSides: ['your_cancel_trade_sides'],
        orderTypes: ['your_order_types'],
        tradeSides: ['your_trade_sides'],
        directions: ['your_directions'],
        sizes: ['your_sizes'],
        prices: ['your_prices'],
        leverage: ['your_leverages']
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});10. Get Open Orders
- Endpoint URL: h - ttps://perps-tradeapi.kanalabs.io/getOpenOrders
- Method: - GET
- Query Parameters: - userAddress (Required) - The wallet address to retrieve open orders for. 
- marketId (Optional) - The ID of the market to filter open orders. // Optional 
 
Note : order_type Explanation:
OPEN_LONG (1): Opens a new long position.
OPEN_SHORT (2): Opens a new short position.
INCREASE_LONG (3): Increases the size of an existing long position.
INCREASE_SHORT (4): Increases the size of an existing short position.
DECREASE_LONG (5): Reduces the size of an existing long position.
DECREASE_SHORT (6): Reduces the size of an existing short position.
CLOSE_LONG (7): Closes an existing long position.
CLOSE_SHORT (8): Closes an existing short position.Example Request:
GET https://perps-tradeapi.kanalabs.io/getOpenOrders?userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770&marketId=66Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched open orders successfully",
  "data": [
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 3,
      "timestamp": "1741444213",
      "price": "7",
      "total_size": "2",
      "remaining_size": "2",
      "order_value": "14",
      "order_id": "645636324063400958808",
      "trade_id": "295147905179352826357",
      "last_updated": "1741444214"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 3,
      "timestamp": "1741445758",
      "price": "7",
      "total_size": "2",
      "remaining_size": "2",
      "order_value": "14",
      "order_id": "682529812245179800408",
      "trade_id": "295147905179352826357",
      "last_updated": "1741445758"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 3,
      "timestamp": "1741446786",
      "price": "7",
      "total_size": "2",
      "remaining_size": "2",
      "order_value": "14",
      "order_id": "700976556301709482840",
      "trade_id": "295147905179352826357",
      "last_updated": "1741446786"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 3,
      "timestamp": "1741446907",
      "price": "7",
      "total_size": "2",
      "remaining_size": "2",
      "order_value": "14",
      "order_id": "719423300401188838232",
      "trade_id": "295147905179352826357",
      "last_updated": "1741446908"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 3,
      "timestamp": "1741447619",
      "price": "0.007",
      "total_size": "1",
      "remaining_size": "1",
      "order_value": "0.007",
      "order_id": "737869903703050289159",
      "trade_id": "295147905179352826357",
      "last_updated": "1741447620"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 3,
      "timestamp": "1741447815",
      "price": "0.007",
      "total_size": "1",
      "remaining_size": "1",
      "order_value": "0.007",
      "order_id": "756316647793939709959",
      "trade_id": "295147905179352826357",
      "last_updated": "1741447815"
    }
  ]
}Example Code to Fetch Open Orders:
The following TypeScript/Node.js script demonstrates how to call the Get Open Orders API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/openOrders';
    const params = {
        userAddress: 'your_wallet_address',
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getOpenOrders : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});11. Get Order History
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getOrderHistory
- Method: - GET
- Query Parameters: - userAddress (Required) - The wallet address to retrieve the order history for. 
- marketId (optional) - The ID of the market to filter the order history. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getOrderHistory?userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770&marketId=66Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched order history successfully",
  "data": [
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 1,
      "timestamp": "1741167151",
      "is_market_order": false,
      "size": "1.50",
      "price": "4.678",
      "order_value": "7.01700",
      "status": "Open",
      "order_id": "18446884819787846214",
      "trade_id": "18446744073709552117",
      "last_updated": "1741262093"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 1,
      "timestamp": "1741236277",
      "is_market_order": false,
      "size": "1.50",
      "price": "4.678",
      "order_value": "7.01700",
      "status": "Cancelled",
      "order_id": "18446884819787846214",
      "trade_id": "18446744073709552117",
      "last_updated": "1741262168"
    },
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "order_type": 1,
      "timestamp": "1741236468",
      "is_market_order": false,
      "size": "1.50",
      "price": "4.50",
      "order_value": "6.7500",
      "status": "Open",
      "order_id": "36893628893497397652",
      "trade_id": "36893488147419103733",
      "last_updated": "1741262168"
    }
  }
]Example Code to Fetch Order History:
The following TypeScript/Node.js script demonstrates how to call the Get Order History API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/orderHistory';
    const params = {
        userAddress: 'your_wallet_address',
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    const getOrderHistory = res.data;
    console.log("getOrderHistory : ", getOrderHistory);
}
main().catch(error => {
    console.error('An error occurred:', error);
});12. Get Positions
- Endpoint URL: h - ttps://perps-tradeapi.kanalabs.io/getPositions
- Method: - GET
- Query Parameters: - userAddress (Required) - The wallet address of the user to view positions for. 
- marketId (optional) - The ID of the market to filter the positions. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getPositions?marketId=66&userAddress=0x2eda5777ed2bf68cbcc67359dd00ae5fa73b1d5fa160b7c3aeb42d748d485387Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched positions successfully",
  "data": [
    {
      "address": "0x3c78886aa67752706b3502b12959edf92e68d85ae64b24226783d26ce6efc1e",
      "market_id": "501",
      "leverage": 2,
      "is_long": true,
      "size": "1",
      "available_order_size": "1",
      "value": "5.678",
      "entry_price": "5.678",
      "liq_price": "2.9117948717948717990163355253",
      "margin": "2.839",
      "tp": "6.012",
      "sl": null,
      "trade_id": "295147905179352826357",
      "last_updated": "1741262185"
    }
  ]
}Example Code to Fetch Open Position:
The following TypeScript/Node.js script demonstrates how to call the Get Open Position API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getPositions';
    const params = {
        marketId: 'your_market_id',
        userAddress: 'your_wallet_address'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getOpenPosition : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});12. Get All Trades
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getAllTrades
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market to retrieve all trades information. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getAllTrades?marketId=66Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Recent trades fetched successfully",
  "data": [
    {
      "txn_version": 6297687196,
      "event_idx": 5,
      "emit_address": "0x2eda5777ed2bf68cbcc67359dd00ae5fa73b1d5fa160b7c3aeb42d748d485387",
      "time": "2024-11-20T20:33:38.600241+00:00",
      "maker_address": "0x2eda5777ed2bf68cbcc67359dd00ae5fa73b1d5fa160b7c3aeb42d748d485387",
      "maker_custodian_id": 28,
      "maker_order_id": "15951655917465922493754983",
      "maker_side": true,
      "market_id": 66,
      "price": 11879,
      "sequence_number_for_trade": 0,
      "size": 10000,
      "taker_address": "0x13eb7ea6b62c6cd791b5c4e0e2ef1dfbe59d1cf4823929343a273274c288bc8a",
      "taker_custodian_id": 28,
      "taker_order_id": "15951748150764039921729536",
      "taker_quote_fees_paid": 59395
    },
    {
      "txn_version": 6297687196,
      "event_idx": 4,
      "emit_address": "0x13eb7ea6b62c6cd791b5c4e0e2ef1dfbe59d1cf4823929343a273274c288bc8a",
      "time": "2024-11-20T20:33:38.600241+00:00",
      "maker_address": "0x2eda5777ed2bf68cbcc67359dd00ae5fa73b1d5fa160b7c3aeb42d748d485387",
      "maker_custodian_id": 28,
      "maker_order_id": "15951655917465922493754983",
      "maker_side": true,
      "market_id": 66,
      "price": 11879,
      "sequence_number_for_trade": 0,
      "size": 10000,
      "taker_address": "0x13eb7ea6b62c6cd791b5c4e0e2ef1dfbe59d1cf4823929343a273274c288bc8a",
      "taker_custodian_id": 28,
      "taker_order_id": "15951748150764039921729536",
      "taker_quote_fees_paid": 59395
    }
  ]
}Example Code to Fetch All trades:
The following TypeScript/Node.js script demonstrates how to call the Get Open Position API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getAllTrades';
    const params = {
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    const getAllTrades = res.data;
    console.log("getAllTrades : ", getAllTrades);
}
main().catch(error => {
    console.error('An error occurred:', error);
});13. Get Order Status By Order Id
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market associated with the order. 
- orderId (Required) - The unique identifier of the order to retrieve its status. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getOrderStatusByOrderId?marketId=66&orderId=15308325717473050761363456Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "status": true,
  "message": "Fetched order status for a given order Id successfully",
  "data": {
    "market_id": 66,
    "order_id": "15308325717473050761363456",
    "created_at": "2024-11-20T11:54:45.957059+00:00",
    "last_updated_at": "2024-11-20T11:54:45.957059+00:00",
    "integrator": "0xee820ab02631dd1a195d3c53fa64f0a8f455dbb9261388e141c3bd3bd3c08363",
    "total_filled": 1000,
    "remaining_size": 0,
    "order_status": "closed",
    "order_type": "market",
    "user": "0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770",
    "direction": "buy",
    "price": 0,
    "average_execution_price": 12813,
    "custodian_id": 28,
    "self_match_behavior": 0,
    "restriction": 0,
    "last_increase_stamp": null,
    "min_base": null,
    "max_base": null,
    "min_quote": null,
    "max_quote": null,
    "total_fees_paid_in_quote_subunits": 6406
  }
}Example Code to Fetch Order Status B Order Id:
The following TypeScript/Node.js script demonstrates how to call the Get Order Status By Order Id API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getOrderStatusByOrderId';
    const params = {
        marketId: 'your_market_id',
        orderId: 'your_order_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getOrderStatusByOrderId : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});14. Get Fills
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getFills
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market for which fills are retrieved. 
- address (Optional) - The address of the user to filter fills (if applicable). 
- from (Required) - The start time of the range in ISO 8601 format (e.g., - 2024-11-21T00:00:00Z).
- to (Required) - The end time of the range in ISO 8601 format (e.g., - 2024-11-21T23:59:59Z).
- orderId (Required) - The unique identifier of the order to retrieve its status. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getFills?marketId=66&address=0x3a6b332c7889784fe57ea61f507b5056e386db8f56c6323b4d898485f468f0c2&from=2024-11-20T00:00:00Z&to=2024-11-21T23:59:59ZExample Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched fill trades for a given time range Successfully",
  "data": [
    {
      "txn_version": 6296434935,
      "event_idx": 1,
      "emit_address": "0x3a6b332c7889784fe57ea61f507b5056e386db8f56c6323b4d898485f468f0c2",
      "time": "2024-11-20T19:23:14.67535+00:00",
      "maker_address": "0x2eda5777ed2bf68cbcc67359dd00ae5fa73b1d5fa160b7c3aeb42d748d485387",
      "maker_custodian_id": 28,
      "maker_order_id": "15891335065048614061485282",
      "maker_side": true,
      "market_id": 66,
      "price": 11490,
      "sequence_number_for_trade": 0,
      "size": 1000,
      "taker_address": "0x3a6b332c7889784fe57ea61f507b5056e386db8f56c6323b4d898485f468f0c2",
      "taker_custodian_id": 28,
      "taker_order_id": "15891427297643009687945216",
      "taker_quote_fees_paid": 5745
    },
    {
      "txn_version": 6295302625,
      "event_idx": 4,
      "emit_address": "0x3a6b332c7889784fe57ea61f507b5056e386db8f56c6323b4d898485f468f0c2",
      "time": "2024-11-20T18:19:35.70863+00:00",
      "maker_address": "0x2eda5777ed2bf68cbcc67359dd00ae5fa73b1d5fa160b7c3aeb42d748d485387",
      "maker_custodian_id": 28,
      "maker_order_id": "15812401447297883953966476",
      "maker_side": false,
      "market_id": 66,
      "price": 11660,
      "sequence_number_for_trade": 0,
      "size": 1000,
      "taker_address": "0x3a6b332c7889784fe57ea61f507b5056e386db8f56c6323b4d898485f468f0c2",
      "taker_custodian_id": 28,
      "taker_order_id": "15812549019983827645235200",
      "taker_quote_fees_paid": 5830
    }
  ]
}Example Code to Fetch Order Status B Order IdFills Data:
The following TypeScript/Node.js script demonstrates how to call the Get Fills Data API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getFills';
    const params = {
        marketId: 'your_market_id',
        address: 'your_address',
        from: 'your_from_time',
        to: 'your_to_time'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getFillsData : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});14. Get Market Price
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getMarketPrice
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market for which the price information is being retrieved. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getMarketPrice?marketId=66Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched Market Price Successfully",
  "data": {
    "bestAskPrice": 6.400,
    "bestBidPrice": 9.880
  }
}Example Code to Fetch Market Price:
The following TypeScript/Node.js script demonstrates how to call the Get Market Price API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getLastPlacedPrice';
    const params = {
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getLastExecutionPrice : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});15. Get Last Execution Price
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getLastPlacedPrice
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market for which the last execution price information is being retrieved. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getLastPlacedPrice?marketId=66Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched last execution price Successfully",
  "data": 8.989
}Example Code to Fetch Last Execution Price:
The following TypeScript/Node.js script demonstrates how to call the Get Last Execution Price API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getLastPlacedPrice';
    const params = {
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getLastExecutionPrice : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});16. Get All Open Order Ids
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getAllOpenOrderIds
- Method: - GET
- Query Parameters: - userAddress(Required) - The address associated with the orders. 
- marketId (optional) - The ID of the market for which open order IDs are being retrieved. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getAllOpenOrderIds?marketId=66&userAddress=0x3a6b332c7889784fe57ea61f507b5056e386db8f56c6323b4d898485f468f0c2Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Open order IDs fetched successfully",
  "data": [
    "645636324063400958808",
    "682529812245179800408",
    "700976556301709482840",
    "719423300401188838232",
    "737869903703050289159",
    "756316647793939709959"
  ]
}Example Code to Fetch Open Order Ids:
The following TypeScript/Node.js script demonstrates how to call the Get Open Order Ids API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getAllOpenOrderIds';
    const params = {
        userAddress: 'your_wallet_address',
        marketId: 'your_market_id'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getOpenOrderIds : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});17. Update Take Profit
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/updateTakeProfit
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market for which the take profit values will be updated. 
- tradeSide (Required) - The trade side: - truefor the long side.
- falsefor the short side.
 
- newTakeProfitPrice (Required) - The new take profit price to be set for the trade. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/updateTakeProfit?marketId=66&tradeSide=true&newTakeProfitPrice=6000Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Update take profit payload built succesfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::update_take_profit",
    "functionArguments": [
      "501",
      "true",
      7590
    ],
    "typeArguments": []
  }
}Example Code to Update take profit price:
The following TypeScript/Node.js script demonstrates how to call the Get Update Take Profit Price API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/updateTakeProfit';
    const params = {
        marketId: 'your_market_id',
        tradeSide: 'your_trade_side',
        newTakeProfitPrice: 'your_tp_price'
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});18. Get Account Aptos Balance
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/getAccountAptBalance
- Method: - GET
- Query Parameters: 
- userAddress (Required) - The address of the account whose balance will be 
Example Request:
GET https://perps-tradeapi.kanalabs.io/getAccountAptBalance?userAddress=0x4d6dc68e391e86991e58ab4d548b7e92872430d1f51bc666fe0c206bad7ff770Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Fetched Account Apt Balance Successfully",
  "data": 8.2344617
}Example Code to Fetch Wallet Account Aptos Balance Information:
The following TypeScript/Node.js script demonstrates how to call the Get Wallet Account Aptos Balance API using the axios library.
import axios from "axios";
async function main(): Promise<void> {
    const baseURL = 'https://perps-tradeapi.kanalabs.io/getAccountAptBalance';
    const params = {
        userAddress: 'your_wallet_address'
    };
    const res = await axios.get(baseURL, {
        params, 
        headers: {
            'x-api-key': process.env.API_KEY,
        },
    });
    console.log("getWalletAccountAptosBalance : ", res);
}
main().catch(error => {
    console.error('An error occurred:', error);
});19. Update Stop Loss
- Endpoint URL: - https://perps-tradeapi.kanalabs.io/updateStopLoss
- Method: - GET
- Query Parameters: - marketId (Required) - The ID of the market for which the take profit values will be updated. 
- tradeSide (Required) - The trade side: - truefor the long side.
- falsefor the short side.
 
- newStopLossPrice (Required) - The new stop loss price to be set for the trade. 
 
Example Request:
GET https://perps-tradeapi.kanalabs.io/updateStopLoss?marketId=66&tradeSide=true&newStopLossPrice=6000Example Response:
- Status Code: - 200 OK
- Response Body: 
{
  "success": true,
  "message": "Update stop loss payload built succesfully",
  "data": {
    "function": "0xabbf40e0c31cbedf182f3e6e9c3570f3f91629424723da876becb514bf5d9fc6::perpetual_scripts::update_stop_loss",
    "functionArguments": [
      "501",
      "true",
      7590
    ],
    "typeArguments": []
  }
}Example Code to Update stop loss price:
The following TypeScript/Node.js script demonstrates how to call the Get Update Stop Loss Price API using the axios library.
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
import axios from "axios";
async function main(): Promise<void> {
    const config = new AptosConfig({ network: Network.TESTNET });
    const aptos = new Aptos(config);
    const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
    );
    const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
    });
    const baseURL = 'https://perps-tradeapi.kanalabs.io/updateStopLoss';
    const params = {
        marketId: 'your_market_id',
        tradeSide: 'your_trade_side',
        newStopLossPrice: 'your_sl_price'
    };
    const res = await axios.get(baseURL, {
        params, headers: {
            'x-api-key': "your_api_key",
        },
    });
    const payloadData = res.data;
    const transactionPayload = await aptos.transaction.build.simple({
        sender: account.accountAddress,
        data: payloadData
    });
    const committedTxn = await aptos.transaction.signAndSubmitTransaction({
        transaction: transactionPayload,
        signer: account,
    });
    await aptos.waitForTransaction({
        transactionHash: committedTxn.hash,
    });
}
main().catch(error => {
    console.error('An error occurred:', error);
});Last updated
