API Usage

Welcome to the TAPP Exchange API documentation. This API allows you to interact with our Aptos-based decentralized exchange. You can use it to swap tokens, create liquidity pools, and query pool/token data.

📚 Table of Contents

API Access Methods

TAPP Exchange supports interaction through multiple transport layers:

  • HTTP POST – Standard and recommended for all JSON-RPC operations

  • WebSocket – Coming soon

All interfaces use a unified protocol: JSON-RPC 2.0


Base URL: https://api.tapp.exchange/api/v1


Signing Write Operations

All write operations (such as swap, create pool, add liquidity, remove liquidity and collect fee) require the user to sign the transaction using their Aptos wallet.

The signed payload ensures authenticity and authorization.

🔐 Step-by-Step: Signing with Wallet

  1. Client calls an api to get an unsigned payload.

  2. Client signs and submit the payload using their wallet (Petra, Martian, etc.).

✅ Example: Sign and Submit Swap Transaction

Step 1 – Get Unsigned Payload from API

See public/swap, public/create-pool-add-liquidity, public/add-liquidity, public/remove-liquidity, public/remove-multi-liquidity and public/collect-fee for generating the unsigned payload.

Step 2 - sign and submit transactions to the blockchain using our backend's hex string payload.

Signing Example Using JavaScript

const hexPayload = "this value received from our backend"

// Convert bytes to BCS
const txSer = Deserializer.fromHex(hexPayload);

// Convert BCS to raw transaction
const rawTxn = RawTransaction.deserialize(txSer)

// Sign and Submit Transaction
const simpleTxn = new SimpleTransaction(rawTxn)
const response = await aptos.signAndSubmitTransaction({signer: sender, transaction: simpleTxn});

Signing Example Using Golang

payloadHex := “this value received from our backend”
txBytes, err := hex.DecodeString(payloadHex)
if err != nil { // Handle error here }

// Convert to raw transaction
deserializer := bcs.NewDeserializer(txBytes)
rawTxn := &aptos.RawTransaction{}
rawTxn.UnmarshalBCS(deserializer)
if deserializer.Error() != nil { // handle error here }

// Sign and Submit transaction
signedTxn, err := rawTxn.SignedTransaction(sender)
if err != nil { // handle error here }

submittedTxn, err := client.SubmitTransaction(signedTxn)
if err != nil { // handle error here}

Signing Example Using Javascript (useWallet)

const hexPayload = "this value received from our backend"

// Convert bytes to BCS
const txSer = Deserializer.fromHex(hexPayload);

// Convert BCS to raw transaction
const rawTxn = RawTransaction.deserialize(txSer)

// Sign and Submit Transaction
const simpleTxn = new SimpleTransaction(rawTxn)

// Use the wallet's signTransaction method to get account authentication
const accAuth = await signTransaction(simpleTxn)

// Create the transaction builder
const signedTxn = new SignedTransaction(rawTxn, accAuth);

// full signed transaction
const signedTxnBytes = signedTxn.bcsToBytes(); 

// Convert to hex string
const txHex = Buffer.from(signedTxnBytes).toString('hex');

// submit the signed transaction to the backend
const response = await fetch('https://api.tapp.exchange/api/v1', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    method: 'public/sc_submit',
    jsonrpc: '2.0',
    id: 1,
    params: {
      hash: txHex
    }
  })
});

List Endpoints

Pool List

Method public/pool

Returns a list of available pools with pagination.

Params

  • poolType: string Specifies pool category. Available options: AMM, CLMM, STABLE.

  • page: number Specifies the page number for pagination. Default: 1.

  • pageSize: number Defines the number of records per page. Default: 10.

Request:

{
  "method": "public/pool",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "poolType": "CLMM",
      "page": 1,
      "pageSize": 20
    }
  }
}

Response Fields

  • poolId: string – Unique pool address/id on Aptos.

  • poolType: string – Pool type, one of AMM, CLMM, STABLE.

  • createdAt: string – ISO-8601 timestamp when the pool was first seen.

  • fee: string – Fee tier in basis points (e.g., "3000" = 0.30%).

  • feeTier: string – Human-readable fee percentage (e.g., "0.0100" = 1.00%).

  • tvl: string – Total value locked in USD (decimal string).

  • txns: number|string – Transaction count over the recent period.

  • volume: string – Aggregate trade volume in USD (decimal string).

  • volumeData: object – Raw volume metrics.

    • volume24h: number – 24h volume in USD.

    • volume7d: number – 7d volume in USD.

    • volume30d: number – 30d volume in USD.

    • volumeprev24h: number – Previous 24h volume (for change calculations).

  • volumePercentage24h: string – 24h volume change percentage, as a string.

  • volumePercentage7d: string – 7d volume change percentage, as a string.

  • volumePercentage30d: string – 30d volume change percentage, as a string.

  • apr: object – APR breakdown for the pool.

    • feeAprPercentage: number – APR from trading fees.

    • boostedAprPercentage: number – Additional APR from boosts/incentives.

    • campaignAprs: array – Optional list of campaign APR components.

    • totalAprPercentage: number – Total APR (fee + boosted + campaigns).

  • tokens: array – Summary of tokens composing the pool.

    • addr: string – Token address/type.

    • symbol: string – Token symbol/ticker.

    • img: string – URL to token logo.

    • verified: boolean – Whether the token is verified.

    • amount: number – Proportional amount used for display/calculations.

    • reserve: number – Token reserve in the pool (see decimals below).

    • color: string – Hex color hint used for UI visuals (if present).

Notes:

  • Numeric monetary values are often represented as strings to preserve precision.

  • Token reserves may require applying token decimals (available via other endpoints) to format human-readable amounts.

Response:

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "public/pool",
    "result": {
        "data": [
            {
                "apr": {
                    "boostedAprPercentage": 0,
                    "campaignAprs": [],
                    "feeAprPercentage": 0,
                    "totalAprPercentage": 0
                },
                "createdAt": "2025-09-07T22:01:57.067296Z",
                "fee": "0",
                "feeTier": "0.0100",
                "poolId": "0xpool",
                "poolType": "CLMM",
                "tokens": [
                    {
                        "addr": "0xaddr",
                        "amount": 0.01,
                        "color": "#2775CA",
                        "img": "https://img.svg",
                        "reserve": 10000,
                        "symbol": "USDT",
                        "verified": true
                    },
                    {
                        "addr": "0xaddr2",
                        "amount": 0.0001,
                        "color": "#8916D4",
                        "img": "https://img.svg",
                        "reserve": 10000,
                        "symbol": "stAPT",
                        "verified": true
                    }
                ],
                "tvl": "0.009999642600",
                "txns": "0",
                "volume": "0",
                "volumeData": {
                    "volume24h": 0,
                    "volume30d": 0,
                    "volume7d": 0,
                    "volumeprev24h": 0
                },
                "volumePercentage24h": "0",
                "volumePercentage30d": "0",
                "volumePercentage7d": "0"
            },
        ],
        "total": 1
    },
    "usIn": 1757327097180790,
    "usOut": 1757327097418431,
    "usDiff": 237641
}

Pool Stats

Method public/pool_stats

Returns aggregate TVL, volume, and fee statistics for a specific pool along with token-level breakdowns.

Params

  • poolId: string Pool unique identifier. Required.

Request:

{
  "method": "public/pool_stats",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "poolId": "0xpool"
    }
  }
}

Response Fields

  • poolId: string – Unique pool address/id on Aptos.

  • poolType: string – Pool type, one of AMM, CLMM, STABLE.

  • feeTier: string – Fee tier for the pool (percentage string or bps formatted).

  • tvl: string – Total value locked in USD (decimal string).

  • volume24h: string – Last 24h trading volume in USD (decimal string).

  • fee24h: string – Fees accrued in the last 24h in USD (decimal string).

  • apr: object – APR breakdown for the pool.

    • feeAprPercentage: number – APR from trading fees.

    • boostedAprPercentage: number – Additional APR from boosts/incentives.

    • campaignAprs: array – Optional list of campaign APR components.

    • totalAprPercentage: number – Total APR (fee + boosted + campaigns).

  • tokens: array – Token-level breakdown of balances and TVL.

    • idx: number – Token index within the pool (0, 1, ...).

    • addr: string – Token type/address.

    • symbol: string – Token symbol.

    • img: string – Logo URL.

    • amount: number – Current reserve amount for this token (apply token decimals for UI formatting).

    • amount_change: number – Net token amount change over the recent window used in stats.

    • tvl: number – Token TVL contribution in USD.

    • tvl_change: number – Change in token TVL contribution over the recent window.

Notes:

  • Monetary values use strings to preserve precision; convert to numbers only for presentation.

  • Apply token decimals from token metadata when formatting amount for display.

Response:

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "public/pool_stats",
    "result": {
        "apr": {
            "boostedAprPercentage": 0,
            "campaignAprs": [],
            "feeAprPercentage": 0,
            "totalAprPercentage": 0
        },
        "fee24h": null,
        "feeTier": "0.0100",
        "poolId": "0xpool",
        "poolType": "CLMM",
        "tokens": [
            {
                "addr": "0xaddr",
                "amount": 0.01,
                "color": "#2775CA",
                "idx": 0,
                "img": "https://img.svg",
                "symbol": "USDT",
                "verified": true
            },
            {
                "addr": "0xaddr2",
                "amount": 0.0001,
                "color": "#8916D4",
                "idx": 1,
                "img": "https://img.svg",
                "symbol": "stAPT",
                "verified": true
            }
        ],
        "tvl": "0.009999643600",
        "volume24h": null
    },
    "usIn": 1757326792474722,
    "usOut": 1757326794039291,
    "usDiff": 1564569
}

Token List

Method public/token

Returns a list of available tokens with pagination.

Params

  • keyword: string Ability to search by token address, name, or symbol.

  • page: number Specifies the page number for pagination. Default: 1.

  • pageSize: number Defines the number of records per page. Default: 10.

  • startTime: number Start timestamp for filtering tokens by creation time.

  • endTime: number End timestamp for filtering tokens by creation time.

Request:

{
  "method": "public/token",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "keyword": "APT",
      "page": 1,
      "pageSize": 20,
      "startTime": 1742428856000,
      "endTime": 1742287927782
    }
  }
}

Response Fields

  • addr: string – Token type/address on Aptos.

  • name: string – Token display name.

  • ticker: string – Token symbol.

  • decimals: number – Fractional decimals for formatting balances.

  • img: string – URL to a token logo image.

  • isVerified: boolean – Whether the token is verified by TAPP.

  • price: string – Latest price in USD (decimal string).

  • tvl: string – Token TVL in USD across pools (decimal string).

  • txnCount: number – Recent transaction count used in Explore views.

  • volume: string – Aggregated trading volume in USD (decimal string).

  • createdAt: string – ISO-8601 timestamp when the token was first indexed.

  • price1hPercentage: string – 1h price change percentage.

  • price24hPercentage: string – 24h price change percentage.

  • price7dPercentage: string – 7d price change percentage.

  • price30dPercentage: string – 30d price change percentage.

Notes:

  • Monetary values are strings to preserve precision.

  • Use decimals when converting on-chain amounts to human-readable format.

Response:

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "public/token",
    "result": {
        "data": [
            {
                "addr": "0x000000000000000000000000000000000000000000000000000000000000000a",
                "color": "#FFFFFF",
                "createdAt": "2025-06-11T11:12:27.335744Z",
                "decimals": 8,
                "img": "https://img.svg",
                "isVerified": true,
                "name": "Aptos Coin",
                "price": "4.26695366",
                "price1hPercentage": "-0.12190433029990174000",
                "price24hPercentage": "1.22319129106911677100",
                "price30dPercentage": "-8.63054261241970021400",
                "price7dPercentage": "0.83888631681684170900",
                "priceData": {
                    "price1h": 4.27216161,
                    "price24h": 4.21539136,
                    "price30d": 4.67,
                    "price7d": 4.23145655
                },
                "ticker": "APT",
                "tvl": "1499139.547246734356",
                "txnCount": "0",
                "volume": "0"
            },
        ],
        "total": 1
    },
    "usIn": 1757293142784413,
    "usOut": 1757293143256432,
    "usDiff": 472019
}

Pool Info

Method public/pool_info

Retrieves liquidity pool information using either two token addresses or a specific pool ID. For swap transactions, users can submit two token addresses and extract the pool ID from the response.

Params

  • poolId: string Pool unique identifier.

  • tokenAddrs: string[] An array containing exactly two token addresses that define the liquidity pool.

Request with PoolId:

{
  "method": "public/pool_info",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "poolId": "0xpool"
    }
  }
}

Request with Token Address:

{
  "method": "public/pool_info",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "tokenAddrs": [
        "0xtoken0",
        "0xtoken1"
      ]
    }
  }
}

Response Fields

  • poolId: string – Unique pool address/id on Aptos.

  • poolType: string – Pool type, one of AMM, CLMM, STABLE.

  • feeTier: string – Fee tier in bps or percent string depending on pool.

  • sqrtPrice: string – Current square root price (Q64.64-style fixed point for CLMM).

  • tickSpacing: number – CLMM tick spacing (only for CLMM pools).

  • tokens: array – Tokens in the pool.

    • addr: string – Token address/type.

    • decimals: number – Token decimals.

    • reserve: number – Current reserve amount (apply decimals for UI).

    • ticker: string – Token symbol.

    • color: string - Color of token in hex format.

    • verified: boolean – Whether the token is verified by TAPP.

  • totalShare: string – Total LP shares minted for the pool.

Notes:

  • tickSpacing is only present for CLMM pools; AMM/Stable may omit it.

  • Use sqrtPrice and tickSpacing to derive price and ticks in CLMM.

Response:

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "public/pool_info",
    "result": {
        "feeTier": "0.0100",
        "poolId": "0xpool1",
        "poolType": "CLMM",
        "sqrtPrice": "18446744073709551616",
        "status": "ACTIVE",
        "tickSpacing": 1,
        "tokens": [
            {
                "addr": "0xaddr1",
                "color": "#2775CA",
                "decimals": 6,
                "reserve": 10000,
                "ticker": "USDT",
                "verified": true
            },
            {
                "addr": "0xaddr2",
                "color": "#8916D4",
                "decimals": 8,
                "reserve": 10000,
                "ticker": "stAPT",
                "verified": true
            }
        ],
        "totalShare": "10000"
    },
    "usIn": 1757293224166478,
    "usOut": 1757293224223869,
    "usDiff": 57391
}

Position

Method public/position

Retrieves a paginated list of user's liquidity positions, organized by pool. A user may have multiple positions within a single pool.

Params

  • userAddr: string The blockchain address of the user whose positions will be retrieved.

  • page: number Specifies the page number for pagination. Default: 1.

  • pageSize: number Defines the number of records per page. Default: 10.

Request:

{
  "method": "public/position",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "userAddr": "0xuser",
      "page": 1,
      "pageSize": 10
    }
  }
}

Response Fields

  • apr: object – APR breakdown for the position.

    • boostedAprPercentage: number – APR from boosts/incentives.

    • campaignAprs: array – Optional list of campaign APR components.

    • feeAprPercentage: number – APR from trading fees.

    • totalAprPercentage: number – Total APR (fee + boosted + campaigns).

  • collectedFees: string – Collected fees for the position.

  • createdAt: string – ISO-8601 timestamp when the position was created.

  • estimatedCollectFees: array – Estimated collect fees.

    • addr: string – collect fee token address.

    • amount: string – collect fee amount.

    • color: string – collect fee token color.

    • decimals: number – collect fee token decimals.

    • idx: number – collect fee token index.

    • img: string – collect fee token image.

    • symbol: string – collect fee token symbol.

    • usd: string – collect fee in USD.

    • verified: boolean – whether the collect fee token is verified.

  • estimatedIncentives: array – Estimated incentives.

    • addr: string – incentive token address.

    • amount: string – incentive amount.

    • color: string – incentive token color.

    • decimals: number – incentive token decimals.

    • idx: number – incentive token index.

    • img: string – incentive token image.

    • symbol: string – incentive token symbol.

    • usd: string – incentive in USD.

    • verified: boolean – whether the incentive token is verified.

  • estimatedWithdrawals: array – Estimated withdrawals.

    • addr: string – withdrawal token address.

    • amount: string – withdrawal amount.

    • color: string – withdrawal token color.

    • decimals: number – withdrawal token decimals.

    • idx: number – withdrawal token index.

    • img: string – withdrawal token image.

    • symbol: string – withdrawal token symbol.

    • usd: string – withdrawal in USD.

    • verified: boolean – whether the withdrawal is verified.

  • feeTier: string – Pool fee tier (bps) for this position's pool.

  • initialDeposits: array – Initial deposits.

    • addr: string – initial deposit token address.

    • amount: string – initial deposit amount.

    • color: string – initial deposit token color.

    • decimals: number – initial deposit token decimals.

    • idx: number – initial deposit token index.

    • img: string – initial deposit token image.

    • symbol: string – initial deposit token symbol.

    • usd: string – initial deposit in USD.

    • verified: boolean – whether the initial deposit token is verified.

  • max: string – Max price for the position.

  • min: string – Min price for the position.

  • mintedShare: string – Minted share for the position.

  • poolId: string – Pool address for the position.

  • poolType: string – Pool type for the position.

  • positionAddr: string – Position address for the position.

  • positionIdx: string – Position index for the position.

  • shareOfPool: string – Share of pool for the position.

  • sqrtPrice: string – Square root price for the position.

  • timeWeightedTvl: string – Time weighted TVL for the position.

  • totalEarnings: array – Total earnings for the position.

    • addr: string – earning token address.

    • amount: string – earning amount.

    • color: string – earning token color.

    • decimals: number – earning token decimals.

    • idx: number – earning token index.

    • img: string – earning token image.

    • symbol: string – earning token symbol.

    • usd: string – earning in USD.

    • verified: boolean – whether the earning token is verified.

  • tvl: string – TVL for the position.

  • userAddr: string – User address for the position.

Response:

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "public/position",
    "result": {
        "data": [
            {
                "apr": {
                    "boostedAprPercentage": "11.8762139379439780526392657412958746681517539133477195240532571877065432914738929279576999339061467300",
                    "campaignAprs": [
                        {
                            "aprPercentage": "11.8762139379439780526392657412958746681517539133477195240532571877065432914738929279576999339061467300",
                            "campaignIdx": "5",
                            "token": {
                                "addr": "0xabc",
                                "color": "#E4FE54",
                                "decimals": 8,
                                "img": "https://img.svg",
                                "symbol": "kAPT",
                                "verified": true
                            }
                        }
                    ],
                    "feeAprPercentage": "0.162086325719364321429338815505616366863250732421875",
                    "totalAprPercentage": "12.0383002636633428181578144068641072044676718820977195240532571877065432914738929279576999339061467300"
                },
                "collectedFees": "0",
                "createdAt": "2025-07-31T14:06:24.905776Z",
                "estimatedCollectFees": [
                    {
                      "addr": "0xabc",
                      "amount": "0",
                      "color": "#FFFFFF",
                      "decimals": 8,
                      "idx": 0,
                      "img": "https://img.svg",
                      "symbol": "APT",
                      "usd": "0",
                      "verified": true
                    },
                ],
                "estimatedIncentives": [
                    {
                        "addr": "0xcds",
                        "amount": "183.07116803",
                        "color": "#E4FE54",
                        "decimals": 8,
                        "idx": -1,
                        "img": "https://img.svg",
                        "symbol": "kAPT",
                        "usd": "801.1811482514462736",
                        "verified": true
                    },
     
                ],
                "estimatedWithdrawals": [
                    {
                        "addr": "0x000000000000000000000000000000000000000000000000000000000000000a",
                        "amount": "47050.6479724828355005803057689224",
                        "color": "#FFFFFF",
                        "decimals": 8,
                        "idx": 0,
                        "img": "https://img.svg",
                        "symbol": "APT",
                        "usd": "206018.207764169780946499039499785239842929778277635932681732811033725738525390625000",
                        "verified": true
                    },
                ],
                "feeTier": "0.0100",
                "initialDeposits": [
                    {
                        "addr": "0x000000000000000000000000000000000000000000000000000000000000000a",
                        "amount": "51000",
                        "color": "#FFFFFF",
                        "decimals": 8,
                        "idx": 0,
                        "img": "https://img.svg",
                        "symbol": "APT",
                        "usd": "223311.028619999997317790985107421875",
                        "verified": true
                    },
                ],
                "max": "1",
                "min": "1",
                "mintedShare": "101978146189073509526129",
                "poolId": "0xpool",
                "poolType": "STABLE",
                "positionAddr": "0xposition",
                "positionIdx": "531",
                "shareOfPool": "0.29575145209971007733",
                "sqrtPrice": "0",
                "timeWeightedTvl": "453900",
                "totalEarnings": [
                    {
                        "addr": "0x000000000000000000000000000000000000000000000000000000000000000a",
                        "amount": "-3949.3520275171644994196942310776",
                        "color": "#FFFFFF",
                        "decimals": 8,
                        "idx": 0,
                        "img": "https://img.svg",
                        "symbol": "APT",
                        "usd": "-17292.820855830216371291945607636635157070221722364067318267188966274261474609375000",
                        "verified": true
                    },
                ],
                "tvl": "1509992.67884299",
                "userAddr": "0xuser"
            }
        ],
        "total": 1
    },
    "usIn": 1757327336013746,
    "usOut": 1757327337522736,
    "usDiff": 1508990
}

User Transaction

Method public/txns

Retrieves a paginated list of user transactions on the platform.

Params

  • userAddr: string The blockchain address of the user whose positions will be retrieved.

  • txType: string Filters transactions by type. Available options: Swap, Add, Remove.

  • page: number Specifies the page number for pagination. Default: 1.

  • pageSize: number Defines the number of records per page. Default: 10.

Request:

{
  "method": "public/txns",
  "jsonrpc": "2.0",
  "id": 3,
  "params": {
    "query": {
      "userAddr": "0xuser",
      "txType": "Add",
      "page": 1,
      "pageSize": 10
    }
  }
}

Response Fields

  • createdAt: string – ISO-8601 timestamp of the transaction.

  • createdBy: string – Sender/creator address.

  • txType: string – One of Swap, Add, Remove, Claim.

  • transactionVersion: number – Aptos transaction version.

  • volume: string – Effective USD volume for the transaction.

  • swapData: object|null – Present for Swap transactions.

    • amountIn: string – Input token amount (apply decimals for UI).

    • amountOut: string – Output token amount.

    • fromIdx: number – Pool token index sold (0 or 1).

    • toIdx: number – Pool token index bought (0 or 1).

  • tokens: array – Token details involved in the transaction.

    • tokenIdx: number – Index of the token in the pool (0 or 1).

    • tokenAddr: string – Token address/type.

    • ticker: string – Symbol.

    • decimals: number – Decimals.

    • img: string – Logo URL.

    • isVerified: boolean – Token verification flag.

    • amount: string – Amount moved for this token (may be positive/negative depending on direction).

Notes:

  • For Add/Remove, swapData is null; amounts reflect liquidity added/removed.

  • Amount strings preserve precision; apply decimals for formatting.

Response:

{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "public/txns",
    "result": {
        "data": [
            {
                "createdAt": "2025-07-31T14:06:23.894852Z",
                "createdBy": "0xaddr1",
                "incentiveTokens": [],
                "swapData": null,
                "tokens": [
                    {
                        "amount": "51000",
                        "decimals": 8,
                        "img": "https://img.svg",
                        "isVerified": true,
                        "ticker": "APT",
                        "tokenAddr": "0x1234",
                        "tokenIdx": 0
                    },
                    {
                        "amount": "51000",
                        "decimals": 8,
                        "img": "https://img.svg",
                        "isVerified": true,
                        "ticker": "kAPT",
                        "tokenAddr": "0xaddr2",
                        "tokenIdx": 1
                    }
                ],
                "transactionVersion": 3153001878,
                "txType": "Add",
                "volume": "453900"
            },
            {
                "createdAt": "2025-07-31T14:05:28.374192Z",
                "createdBy": "",
                "incentiveTokens": [],
                "swapData": {
                    "amountIn": "6999.769",
                    "amountOut": "6991.94746557",
                    "fromIdx": 1,
                    "toIdx": 0
                },
                "tokens": [
                    {
                        "amount": "0",
                        "decimals": 8,
                        "img": "https://img.svg",
                        "isVerified": true,
                        "ticker": "APT",
                        "tokenAddr": "0xasdf",
                        "tokenIdx": 0
                    },
                    {
                        "amount": "0",
                        "decimals": 8,
                        "img": "https://img.svg",
                        "isVerified": true,
                        "ticker": "kAPT",
                        "tokenAddr": "0xfdsa",
                        "tokenIdx": 1
                    }
                ],
                "transactionVersion": 3152998075,
                "txType": "Swap",
                "volume": "31148.9700"
            },
            {
                "createdAt": "2025-07-31T14:00:53.020418Z",
                "createdBy": "0xaddr",
                "incentiveTokens": [],
                "swapData": null,
                "tokens": [
                    {
                        "amount": "-40846.91730739",
                        "decimals": 8,
                        "img": "https://img.svg",
                        "isVerified": true,
                        "ticker": "APT",
                        "tokenAddr": "0xasdf",
                        "tokenIdx": 0
                    },
                    {
                        "amount": "-59223.02664137",
                        "decimals": 8,
                        "img": "https://img.svg",
                        "isVerified": true,
                        "ticker": "kAPT",
                        "tokenAddr": "0xfdsa",
                        "tokenIdx": 1
                    }
                ],
                "transactionVersion": 3152977998,
                "txType": "Remove",
                "volume": "446311.9500"
            },
        ],
        "total": 5
    },
    "usIn": 1757295289107834,
    "usOut": 1757295289161899,
    "usDiff": 54065
}

Swap

Method public/swap

Generates a transaction payload for client signature to perform token swaps across V2, V3, and Stable pools.

AMM

Params

  • poolId: string Unique identifier of the liquidity pool to use for the swap.

  • a2b: boolean Set to true when swapping from token0 to token1 in the pool.

  • fixedAmountIn: boolean Indicates whether the input amount will remain fixed during the swap.

  • amountIn: number Quantity of input tokens to swap, denominated in microunits.

  • amountOut: number Minimum quantity of output tokens expected from the swap, denominated in microunits.

  • accountAddress: string Blockchain address of the transaction sender.

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

Request:

{
  "method": "public/swap",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "poolId": "0xpool",
      "a2b": true,
      "fixedAmountIn": true,
      "amountIn": 100000000,
      "amountOut": 295873010,
      "accountAddress": "0xaccount",
      "version": "v2"
    }
  }
}

Response Fields (same response for swap / add liquidity / remove liqudity)

  • payload: string – Hex-encoded BCS bytes of the RawTransaction.

Next steps:

  • Deserialize, sign, and submit the payload using your wallet as shown in the Signing section.

Response:

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "public/swap",
    "result": {
        "payload": "025dd0cf28acfca412d756115a03fe4b2c787a8a796e33d2a3edf1a8e60cb85f4d0200000000000002487e905f899ccb6d46fdaec56ba1e0c4cf119862a16c409904b8c78fab1f5e8a06726f7574657204737761700001333252320d17f01756f3d010f80ff46d6baf842207ed2732cdbab6b87a8270c69da3010100e1f50500000000f2a9a2110000000058020000000000006400000000000000ae35be680000000001"
    },
    "usIn": 1757295745828734,
    "usOut": 1757295746079874,
    "usDiff": 251140
}

CLMM

Params

  • poolId: string Unique identifier of the liquidity pool to use for the swap.

  • a2b: boolean Set to true when swapping from token0 to token1 in the pool.

  • fixedAmountIn: boolean Indicates whether the input amount will remain fixed during the swap.

  • minAmountOut: number Minimum quantity of output tokens expected from the swap, denominated in microunits.

  • sqrtPrice: number Target square root price for v3.

  • amountIn: number Quantity of input tokens to swap, denominated in microunits.

  • accountAddress: string Blockchain address of the transaction sender.

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

Request:

{
  "method": "public/swap",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "poolId": "0xpool",
      "a2b": true,
      "fixedAmountIn": true,
      "minAmountOut": 0,
      "sqrtPrice": 4124817371235595,
      "amountIn": 100000000,
      "accountAddress": "0xaccount",
      "version": "v3"
    }
  }
}

Stable

Params

  • poolId: string Unique identifier of the liquidity pool to use for the swap.

  • accountAddress: string Blockchain address of the transaction sender.

  • tokenIn: number Index of the token which wants to be sold.

  • tokenOut: number Index of the token which wants to be bought.

  • amountIn: number Quantity of input tokens to swap, denominated in microunits.

  • minAmountOut: number Minimum quantity of output tokens expected from the swap, denominated in microunits.

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

Request:

{
  "method": "public/swap",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "tokenIn": 0,
      "tokenOut": 1,
      "amountIn": 100000,
      "minAmountOut": 99000,
      "version": "stable"
    }
  }
}

Create Pool and Add Liquidity

Method public/create_pool_add_liquidity

Generates a transaction payload for client signature to create a new liquidity pool and add initial liquidity across V2, V3, and Stable pool types.

AMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • accountAddress: string Blockchain address of the transaction sender.

  • coins: string[] Token addresses that will form the liquidity pool.

  • amounts: string[] Quantities of each token to add as initial liquidity.

  • minAmounts: string[] Minimum quantities each token to add as initial liquidity.

  • fee: number Fee tier for the pool. Available options: 100 (0.01%), 500 (0.05%), 3000 (0.3%), 10000 (1%).

Request:

{
  "method": "public/create_pool_add_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v2",
      "accountAddress": "0xaccount",
      "coins": [
        "0xcoin0",
        "0xcoin1"
      ],
      "amounts": [
        "100000",
        "200000"
      ],
      "minAmounts": [
        "0",
        "0"
      ],
      "fee": 10000
    }
  }
}

CLMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • accountAddress: string Blockchain address of the transaction sender.

  • coins: string[] Token addresses that will form the liquidity pool.

  • amounts: string[] Quantities of each token to add as initial liquidity.

  • minAmounts: string[] Minimum quantities each token to add as initial liquidity.

  • fee: number Fee tier for the pool. Available options: 100 (0.01%), 500 (0.05%), 3000 (0.3%), 10000 (1%).

  • sqrtPrice: string Initial square root price of the pool.

  • lowerTick: string Lower tick boundary of the price range.

  • upperTick: string Upper tick boundary of the price range

  • fixedAmountA: boolean Indicator whether the first token amount remains fixed during position creation.

Request:

{
  "method": "public/create_pool_add_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v3",
      "accountAddress": "0xaccount",
      "coins": [
        "0xcoin0",
        "0xcoin1"
      ],
      "amounts": [
        "100000",
        "200000"
      ],
      "minAmounts": [
        "0",
        "0"
      ],
      "fee": 10000,
      "sqrtPrice": "4124817371235595",
      "lowerTick": "0",
      "upperTick": "23040",
      "fixedAmountA": true
    }
  }
}

Stable

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • accountAddress: string Blockchain address of the transaction sender.

  • coins: string[] Token addresses that will form the liquidity pool.

  • amounts: string[] Quantities of each token to add as initial liquidity.

  • fee: number Fee tier for the pool. Available options: 100 (0.01%), 500 (0.05%), 3000 (0.3%), 10000 (1%).

  • amplification: string Between 100 to max 1000.

  • offPegMultiplier: string Off peg multiplier.

  • minMintAmount: string Minimum minted LP amount.

Request:

{
  "method": "public/create_pool_add_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "stable",
      "accountAddress": "0xaccount",
      "coins": [
        "0xcoin0",
        "0xcoin1"
      ],
      "amounts": [
        "100000",
        "200000"
      ],
      "fee": 10000,
      "amplification": "1000",
      "offPegMultiplier": "20000000000",
      "minMintAmount": "0"
    }
  }
}

Add Liquidity

Method public/add_liquidity

Generates a transaction payload for client signature to add liquidity across V2, V3, and Stable pool types.

AMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • amounts: string[] Quantities of each token to add as initial liquidity.

  • minAmounts: string[] Minimum quantities each token to add as initial liquidity.

Request:

{
  "method": "public/add_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v2",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "amounts": [
        "100000",
        "200000"
      ],
      "minAmounts": [
        "0",
        "0"
      ]
    }
  }
}

CLMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • amounts: string[] Quantities of each token to add as initial liquidity.

  • minAmounts: string[] Minimum quantities each token to add as initial liquidity.

  • lowerTick: string Lower tick boundary of the price range.

  • upperTick: string Upper tick boundary of the price range

  • fixedAmountA: boolean Indicator whether the first token amount remains fixed during position creation.

Request:

{
  "method": "public/add_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v3",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "amounts": [
        "100000",
        "200000"
      ],
      "minAmounts": [
        "0",
        "0"
      ],
      "lowerTick": "0",
      "upperTick": "23040",
      "fixedAmountA": true
    }
  }
}

Stable

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • amounts: string[] Quantities of each token to add as initial liquidity.

  • minMintAmount: string Minimum minted LP amount.

Request:

{
  "method": "public/add_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "stable",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "amounts": [
        "100000",
        "200000"
      ],
      "minMintAmount": "0"
    }
  }
}

Remove Liquidity

Method public/remove_liquidity

Generates a transaction payload for client signature to remove liquidity across V2, V3, and Stable pool types.

AMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

  • minAmounts: string[] Minimum token amounts to receive when removing liquidity, protecting against slippage.

  • burnedShare: string Amount of liquidity provider (LP) tokens or shares to burn/remove from the pool.

Request:

{
  "method": "public/remove_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v2",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positionAddress": "0xposition",
      "minAmounts": [
        "100000",
        "200000"
      ],
      "burnedShare": "14620"
    }
  }
}

CLMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

  • minAmounts: string[] Minimum token amounts to receive when removing liquidity, protecting against slippage.

  • burnedShare: string Amount of liquidity provider (LP) tokens or shares to burn/remove from the pool.

Request:

{
  "method": "public/remove_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v3",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positionAddress": "0xposition",
      "minAmounts": [
        "100000",
        "200000"
      ],
      "burnedShare": "14620"
    }
  }
}

Stable

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

  • minAmounts: string[] Minimum token amounts to receive when removing liquidity, protecting against slippage.

  • burnedShare: string Amount of liquidity provider (LP) tokens or shares to burn/remove from the pool.

  • type: number type 1 = remove_liquidity_one_coin, type 2 =remove_liquidity_imbalance, type 3 = remove_liquidity_ratio.

Request for stable:

{
  "method": "public/remove_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v3",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positionAddress": "0xposition",
      "minAmounts": [
        "100000",
        "200000"
      ],
      "burnedShare": "14620",
      "type": 1
    }
  }
}

Remove Multi Liquidity

Method public/remove_multi_liquidity

Generates a transaction payload for client signature to remove multiple liquidities across V2, V3, and Stable pool types.

AMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • positions: An array of objects, each describing a position with:

    • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

    • minAmounts: string[] Minimum token amounts to receive when removing liquidity, protecting against slippage.

    • burnedShare: string Amount of liquidity provider (LP) tokens or shares to burn/remove from the pool.

Request:

{
  "method": "public/remove_multi_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v2",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positions": [
        {
          "positionAddress": "0xposition",
          "minAmounts": [
            "100000",
            "200000"
          ],
          "burnedShare": "14620"
        }
      ]
    }
  }
}

CLMM

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • positions: An array of objects, each describing a position with:

    • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

    • minAmounts: string[] Minimum token amounts to receive when removing liquidity, protecting against slippage.

    • burnedShare: string Amount of liquidity provider (LP) tokens or shares to burn/remove from the pool.

Request:

{
  "method": "public/remove_multi_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v3",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positions": [
        {
          "positionAddress": "0xposition",
          "minAmounts": [
            "100000",
            "200000"
          ],
          "burnedShare": "14620"
        }
      ]
    }
  }
}

Stable

Params

  • version: string Specifies the pool version protocol. Available options: v2, v3, stable.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string Blockchain address of the transaction sender.

  • positions: An array of objects, each describing a position with:

    • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

    • minAmounts: string[] Minimum token amounts to receive when removing liquidity, protecting against slippage.

    • burnedShare: string Amount of liquidity provider (LP) tokens or shares to burn/remove from the pool.

    • type: number type 1 = remove_liquidity_one_coin, type 2 =remove_liquidity_imbalance, type 3 = remove_liquidity_ratio.

Request:

{
  "method": "public/remove_multi_liquidity",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "stable",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positions": [
        {
          "positionAddress": "0xposition",
          "minAmounts": [
            "100000",
            "200000"
          ],
          "burnedShare": "14620",
          "type": 1
        }
      ]
    }
  }
}

Collect Fee

Method public/collect_fee

Generates a transaction payload for client signature to collect fees for V3 pool type.

Params

  • version: string Specifies the pool version protocol. Must be V3 for this operation.

  • poolId: string Unique identifier for the liquidity pool.

  • accountAddress: string The blockchain address of the account.

  • positionAddress: string The on-chain address identifier of the specific liquidity position to be withdrawn.

Request:

{
  "method": "public/collect_fee",
  "jsonrpc": "2.0",
  "id": 1,
  "params": {
    "query": {
      "version": "v3",
      "poolId": "0xpool",
      "accountAddress": "0xaccount",
      "positionAddress": "0xposition"
    }
  }
}

Last updated