Skip to main content
GET
/
api
/
v1
/
quote
Get swap quote
curl --request GET \
  --url https://api.vulcx.xyz/api/v1/quote \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.vulcx.xyz/api/v1/quote"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.vulcx.xyz/api/v1/quote', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.vulcx.xyz/api/v1/quote",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.vulcx.xyz/api/v1/quote"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.vulcx.xyz/api/v1/quote")
  .header("Authorization", "Bearer <token>")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.vulcx.xyz/api/v1/quote")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "success": true,
  "data": {
    "inputMint": "So11111111111111111111111111111111111111112",
    "outputMint": "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
    "amountIn": "1000000000",
    "amountOut": "145320000",
    "priceImpactBps": 25,
    "priceImpactPercent": "0.25%",
    "priceImpactSeverity": "low",
    "feeBps": 25,
    "routes": [
      {
        "poolAddress": "HJPjoWUrhoZzkNfRpHuieeFk9WcZWjwy6PBjZ81ngndJ",
        "poolType": "Vortex",
        "percent": 100,
        "inputMint": "So11111111111111111111111111111111111111112",
        "outputMint": "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG"
      }
    ],
    "routePath": [
      "So11111111111111111111111111111111111111112",
      "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG"
    ],
    "hopCount": 1,
    "otherAmountThreshold": "144593400",
    "priceImpactWarning": "Price impact is low"
  }
}
{
  "success": false,
  "error": "no route found"
}
{
  "success": false,
  "error": "no route found"
}

Authorizations

Authorization
string
header
required

API key sent as Authorization: Bearer vulcx_.... Required on every endpoint except GET /health and GET /api/v1/tokens.

Query Parameters

inputMint
string
required

Input token mint address (base58-encoded public key).

Example:

"So11111111111111111111111111111111111111112"

outputMint
string
required

Output token mint address (base58-encoded public key).

Example:

"uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG"

amount
string
required

Amount in smallest token units (lamports for FOGO, base units for SPL tokens). For FOGO with 9 decimals: 1000000000 = 1 FOGO.

Example:

"1000000000"

swapMode
enum<string>
required

How the amount is interpreted. ExactIn: amount is exact input, output is estimated. ExactOut: amount is exact desired output, input is estimated.

Available options:
ExactIn,
ExactOut
Example:

"ExactIn"

slippageBps
integer
default:50

Slippage tolerance in basis points (1 bps = 0.01%). Defaults to 50 (0.5%). Common values: 10 (0.1%), 50 (0.5%), 100 (1%), 300 (3%).

Example:

50

Response

Quote calculated successfully.

success
boolean
Example:

true

data
object

Swap quote with routing and price impact details.

Last modified on July 5, 2026