Build the unsigned Solana origin tx
curl --request POST \
--url https://api.geodesics.ai/swap/build-solana-tx \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"geoQuoteToken": "<string>"
}
'import requests
url = "https://api.geodesics.ai/swap/build-solana-tx"
payload = { "geoQuoteToken": "<string>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({geoQuoteToken: '<string>'})
};
fetch('https://api.geodesics.ai/swap/build-solana-tx', 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.geodesics.ai/swap/build-solana-tx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'geoQuoteToken' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.geodesics.ai/swap/build-solana-tx"
payload := strings.NewReader("{\n \"geoQuoteToken\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.geodesics.ai/swap/build-solana-tx")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"geoQuoteToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.geodesics.ai/swap/build-solana-tx")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"geoQuoteToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"unsignedTransaction": "<string>",
"geoOpToken": "<string>"
}Build
Build the unsigned Solana origin tx
Unseals the quote token and returns the unsigned Solana v0 VersionedTransaction (base64) plus an opaque sealed op token. The caller signs the tx, then posts submit-solana.
POST
/
swap
/
build-solana-tx
Build the unsigned Solana origin tx
curl --request POST \
--url https://api.geodesics.ai/swap/build-solana-tx \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"geoQuoteToken": "<string>"
}
'import requests
url = "https://api.geodesics.ai/swap/build-solana-tx"
payload = { "geoQuoteToken": "<string>" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({geoQuoteToken: '<string>'})
};
fetch('https://api.geodesics.ai/swap/build-solana-tx', 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.geodesics.ai/swap/build-solana-tx",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'geoQuoteToken' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.geodesics.ai/swap/build-solana-tx"
payload := strings.NewReader("{\n \"geoQuoteToken\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.geodesics.ai/swap/build-solana-tx")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"geoQuoteToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.geodesics.ai/swap/build-solana-tx")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"geoQuoteToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"unsignedTransaction": "<string>",
"geoOpToken": "<string>"
}Authorizations
Body
application/json
The sealed quote returned by POST /swap/quote.
Minimum string length:
1Signed delegation authorization for a wallet not yet delegated on the origin chain. Obtain the fields to sign from GET /swap/delegation; omit for delegated wallets.
Show child attributes
Show child attributes
