FluxBeam DEX
  • Welcome to FluxBeam
    • 📚About FluxBeam
    • 🟢Get Started
  • INFINITY
    • 🔁INFINITY UI
      • 📊Trading Dashboard
      • 💡Token Info
      • 📈Trading Chart
      • 📁Activity Log/Analytics
    • 💲Advanced Limit Orders
      • 🟢Limit Order
      • 💵Take Profit
      • 🔴Stop Loss
      • 📉Trailing Stop Loss
    • 🧠Smart Money
    • 🔥Trending
    • 💠Gems
    • 🤖Signals and Automations
  • Basic Features
    • 🔁How to Swap
    • 💧How to Provide Liquidity
    • 🚰How to Manage Liquidity
    • 🎁How to Wrap/Unwrap $SOL
    • 🔃How to Transfer Tokens
    • 🔗How to Bridge Tokens
  • FluxTools Tutorials
    • 🆕V1 Token Creation
    • 🧩V2 Token Creation
    • 🌊Pool Creation
    • 🔓Token Locker
    • 📄Token Manager
    • 🖼️MetaData Manager
    • 💵Fee Manager
    • 🔎Withheld Amounts
    • 🔥Token Burn
    • 🪙Token Mint
    • 🪂Token Airdrop (Beta)
  • Configure
    • 🛞Settings
    • 🪪Profile
  • Support
    • ❓Frequently Asked Questions
    • 💬Open a Ticket
  • 👨‍💻Developers
    • ↔️Swap API
    • 🌊Pool API
  • 🔬Publications
    • ⚖️Solana Bandwidth Markets
Powered by GitBook
On this page
  1. Developers

Swap API

PreviousOpen a TicketNextPool API

Last updated 1 year ago

The FluxBeam Swap API allows developers and users to retrieve swap quotes and pre-built transactions to speed up integration.

Quote

The quote API will return the expected output amount and slippage amount based on the provided input amount & token mints.

Currently, the API only returns pools on FluxBeam DEX.

Example

const inMint = "So11111111111111111111111111111111111111112"
const outMint = "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX"
const amount = "1000000000"
const slippageBPS = "50"

const uri = `https://api.fluxbeam.xyz/v1/quote?inputMint=${inMint}&outputMint=${outMint}&amount=${amount}&slippageBps=${slippageBPS}`

const quote = await (await fetch(uri)).json()

Swap Transaction

The Transaction endpoint returns a pre-built transaction that is ready to be signed by the payer wallet based on the quote provided.

The swap transaction includes the following instructions:

  • Priority Fee Price & Units

  • Input & Output associated token account creation

  • Wrap & Unwrap of SOL accounts

Example

import { Connection, Keypair, VersionedTransaction } from '@solana/web3.js';

const uri = `https://api.fluxbeam.xyz/v1/swap/transaction`

const resp = await(await fetch(uri, {
    method: "POST",
    headers: {"Content-Type": "application/json"},
    body: JSON.strinfgify({
        //
    })
})).json()

//Decode the transaction from base64
const swapTransactionBuf = Buffer.from(resp.transaction, 'base64');
const transaction = VersionedTransaction.deserialize(swapTransactionBuf);

console.log("Transaction",transaction);

//Sign the transaction with the payer wallet
transaction.sign([wallet.payer]);

//Execute the transaction
const client= new Connection('{RPC_URL}');
const sig = client.sendRawTransaction(transaction.serialize(), {maxRetries: 3, skipPreflight: true})

console.log("Transaction Signature:", sig)

Swap Instruction

The instruction endpoint will return the FluxBeam swap instruction for a given quote. The instruction should be included within a transaction that handles the priority fee & associated token account calls.

Example

import { Connection, Keypair, Transaction} from '@solana/web3.js';

const uri = `https://api.fluxbeam.xyz/v1/instruction`

const resp = await(await fetch(uri, {
    method: "POST",
    headers: {"Content-Type": "application/json"},
    body: JSON.strinfgify({
        quote, //Response from /quote
        userPublicKey: "{PAYER_WALLET_ADDRESS}",
        priorityFeeLamports: 100,
        wrapAndUnwrapSol: true
    })
})).json()


//Decode the instruction
const ix = new TransactionInstruction({
    programId: new PublicKey(instruction.programId),
    keys: instruction.accounts.map((key) => ({
      pubkey: new PublicKey(key.Pubkey),
      isSigner: key.IsSigner,
      isWritable: key.IsWritable,
    })),
    data: Buffer.from(instruction.data, "base64"),


//Create new transaction
const transaction = new Transaction();

//Add pre-swap instructions
// transaction.add(ataIx)

//Add swap instruction
transaction.add(ix)

//Add post-swap instructions
// transaction.add(wSolClose)

console.log("Transaction",transaction);

//Sign the transaction with the payer wallet
transaction.sign([wallet.payer]);

//Execute the transaction
const client= new Connection('{RPC_URL}');
const sig = client.sendRawTransaction(transaction.serialize(), {maxRetries: 3, skipPreflight: true})

console.log("Transaction Signature:", sig)
👨‍💻
↔️

Get a quote for a token swap

get
Query parameters
inputMintstringRequired

Source token

outputMintstringRequired

Destination token

amountintegerRequired

Source token input amount

slippageBpsintegerOptional

Slippage in BPS

Responses
200
Returns a swap quote
application/json
get
GET /v1/quote HTTP/1.1
Host: api.fluxbeam.xyz
Accept: */*
200

Returns a swap quote

{
  "quote": {
    "amountIn": 1000000,
    "inputMint": "So11111111111111111111111111111111111111112",
    "minimumOut": 9820,
    "outAmount": 10000,
    "outputMint": "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX",
    "pool": "GeNc51GBjhXiYruWrx6VPh6xMNeTjYb5hUBpFJi9cW27",
    "program": "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X"
  }
}
  • Quote
  • GETGet a quote for a token swap
  • Example
  • Swap Transaction
  • POSTReturns the swap transaction for the provided quote
  • Example
  • Swap Instruction
  • POSTReturns a swap instruction for the provided quote
  • Example

Returns the swap transaction for the provided quote

post
Body
priorityFeeLamportsintegerOptionalExample: 100
userPublicKeystringOptionalExample: {PAYER_WALLET_ADDRESS}
wrapAndUnwrapSolbooleanOptionalExample: true
Responses
200
Returns a swap quote
application/json
post
POST /v1/swap/transaction HTTP/1.1
Host: api.fluxbeam.xyz
Content-Type: application/json
Accept: */*
Content-Length: 386

{
  "priorityFeeLamports": 100,
  "quote": {
    "amountIn": 1000000,
    "inputMint": "So11111111111111111111111111111111111111112",
    "minimumOut": 9820,
    "outAmount": 10000,
    "outputMint": "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX",
    "pool": "GeNc51GBjhXiYruWrx6VPh6xMNeTjYb5hUBpFJi9cW27",
    "program": "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X"
  },
  "userPublicKey": "{PAYER_WALLET_ADDRESS}",
  "wrapAndUnwrapSol": true
}
200

Returns a swap quote

{
  "transaction": "text"
}

Returns a swap instruction for the provided quote

post

If no pool is provided a quote will be generated.

Body
priorityFeeLamportsintegerOptionalExample: 100
userPublicKeystringOptionalExample: {PAYER_WALLET_ADDRESS}
wrapAndUnwrapSolbooleanOptionalExample: true
Responses
200
Returns a swap instruction to be added to transaction
application/json
post
POST /v1/swap/instruction HTTP/1.1
Host: api.fluxbeam.xyz
Content-Type: application/json
Accept: */*
Content-Length: 386

{
  "priorityFeeLamports": 100,
  "quote": {
    "amountIn": 1000000,
    "inputMint": "So11111111111111111111111111111111111111112",
    "minimumOut": 9820,
    "outAmount": 10000,
    "outputMint": "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX",
    "pool": "GeNc51GBjhXiYruWrx6VPh6xMNeTjYb5hUBpFJi9cW27",
    "program": "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X"
  },
  "userPublicKey": "{PAYER_WALLET_ADDRESS}",
  "wrapAndUnwrapSol": true
}
200

Returns a swap instruction to be added to transaction

{
  "instruction": {
    "accounts": "text",
    "data": [
      1
    ],
    "programId": "text"
  }
}