curl --request GET \
--url https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/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-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx",
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: <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"
"net/http"
"io"
)
func main() {
url := "https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"multiId": "8ppABEC1HZGrSr1PGbUnCN",
"chain": "sol",
"transactions": [
{
"houdiniIds": [
"nkuYKXXrfzabgG4u3nZhpq",
"q2R66TDXHeHKb5kxEcAo9C"
],
"txData": {
"data": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB..."
}
}
]
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"fields": {},
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}Get batch transaction
Returns one Solana transaction that pays every deposit address in the group. This is the only call a Solana batch needs — sign the returned transaction and broadcast it yourself, then poll Get batch status.
- every order must send the same token — all native SOL, or all the same SPL token
- Solana only;
txData.datais the serialized transaction, base64 encoded - up to 10 deposit addresses per batch; a larger group comes back as several entries in
transactions - nothing to submit back afterwards; there is no Solana equivalent of the EVM submit step
- for EVM use Build batch transaction instead
curl --request GET \
--url https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/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-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx",
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: <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"
"net/http"
"io"
)
func main() {
url := "https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/exchanges/multi/{multiId}/tx")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"multiId": "8ppABEC1HZGrSr1PGbUnCN",
"chain": "sol",
"transactions": [
{
"houdiniIds": [
"nkuYKXXrfzabgG4u3nZhpq",
"q2R66TDXHeHKb5kxEcAo9C"
],
"txData": {
"data": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB..."
}
}
]
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"fields": {},
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}Authorizations
Send Authorization: <ApiKey>:<ApiSecret> — joined by a colon, raw. No Bearer prefix, no base64.
Path Parameters
The multi exchange group ID
64Query Parameters
Wallet address that will sign and fund the transaction(s)
1Response
Success
The group these transactions fund.
Chain kind of the from token (e.g. "solana", "evm")
One entry per batch. A group larger than the per-chain batch limit is split across several.
Show child attributes
Show child attributes
Native coin the smart account still needs before you can submit, in wei. "0" means it is already funded.
Native coin the smart account holds right now, in wei. The account is owned by the sender wallet, so this balance stays under the user's control.