curl --request GET \
--url https://api-partner.houdiniswap.com/v2/orders/{houdiniId} \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/orders/{houdiniId}"
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/orders/{houdiniId}', 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/orders/{houdiniId}",
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/orders/{houdiniId}"
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/orders/{houdiniId}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/orders/{houdiniId}")
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{
"houdiniId": "example-houdini-id",
"created": "2026-01-01T12:00:00.000Z",
"depositAddress": "bc1qexampledepositaddress000000000000000000",
"receiverAddress": "0x9f1f9a5c0f1d9a5c0f1d9a5c0f1d9a5c0f1d9a5c",
"anonymous": false,
"expires": "2026-01-01T12:30:00.000Z",
"status": 0,
"inAmount": 0.25,
"inSymbol": "BTC",
"outAmount": 3.52,
"outSymbol": "ETH",
"displayStatus": "WAITING_FOR_DEPOSIT"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"fields": {},
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}Get order details
Returns order details for a given Houdini order ID created in the last 48 hours.
curl --request GET \
--url https://api-partner.houdiniswap.com/v2/orders/{houdiniId} \
--header 'Authorization: <api-key>'import requests
url = "https://api-partner.houdiniswap.com/v2/orders/{houdiniId}"
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/orders/{houdiniId}', 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/orders/{houdiniId}",
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/orders/{houdiniId}"
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/orders/{houdiniId}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-partner.houdiniswap.com/v2/orders/{houdiniId}")
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{
"houdiniId": "example-houdini-id",
"created": "2026-01-01T12:00:00.000Z",
"depositAddress": "bc1qexampledepositaddress000000000000000000",
"receiverAddress": "0x9f1f9a5c0f1d9a5c0f1d9a5c0f1d9a5c0f1d9a5c",
"anonymous": false,
"expires": "2026-01-01T12:30:00.000Z",
"status": 0,
"inAmount": 0.25,
"inSymbol": "BTC",
"outAmount": 3.52,
"outSymbol": "ETH",
"displayStatus": "WAITING_FOR_DEPOSIT"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"fields": {},
"requestId": "<string>"
}{
"message": "<string>",
"code": "<string>",
"requestId": "<string>"
}Authorizations
Path Parameters
64Response
Success
- -2 Order is being initialized (label: INITIALIZING)
- -1 Order initialized (label: NEW)
- 0 Waiting for deposit confirmation (label: WAITING)
- 1 Deposit is being confirmed (label: CONFIRMING)
- 2 Exchange is in progress (label: EXCHANGING)
- 3 Order is going through anonymization (label: ANONYMIZING)
- 4 Order completed successfully (label: FINISHED)
- 5 Order has expired (label: EXPIRED)
- 6 Order failed (label: FAILED)
- 7 Order was refunded (label: REFUNDED)
- 8 Order was deleted (label: DELETED)
-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8 ETA time, depending on swap
USD value of the input amount at order creation time.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
- 0 New swap
- 1 Waiting for confirmation
- 2 Being confirmed
- 3 Exchange in progress
- 4 Sending to destination
- 5 Swap completed
- 6 Swap failed
- 7 Swap refunded
- 8 Verifying swap
- 9 Swap expired
- 10 Fallback mode
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 WAITING_FOR_DEPOSIT, DEPOSIT_DETECTED, EXCHANGE_IN_PROGRESS, SENDING_TO_INTERMEDIARY, REACHED_INTERMEDIARY, INITIATING_SECOND_EXCHANGE, SECOND_EXCHANGE_IN_PROGRESS, SENDING_TO_RECEIVER, SWAP_COMPLETED, EXPIRED, FAILED, REFUNDED, DELETED Memo/tag required when depositing funds for assets that use one
True when the route that executed is not the one that was quoted,
because the quoted route failed and a fallback was used. The amounts may
differ from the quote — compare inAmount against quotedInAmount and
outAmount against quotedOutAmount.
The deposit amount originally quoted, present only when the order was
rerouted. inAmount is what the fallback route actually asks for; on an
exact-out order this is the side that moves.
The payout originally quoted, present only when the order was rerouted.
outAmount is what the fallback route will actually pay; on an exact-in
order this is the side that moves.
Memo/tag required when receiving funds for assets that use one
Name of the exchange handling the deposit leg. Omitted on private orders, which withhold the provider, and on multiswap orders that have not yet been assigned one.
Multi ID. Present only on orders created as part of a batch.
Status of the payout leg. Present only on private orders — public orders settle in a single leg and never carry one.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Payout transaction hash of the second leg. Present only on private orders,
and only once that leg has paid out. Public orders report their payout
hash on inTransactionOutHash instead.
Date and time when the order received status 4. Stamped only when an order finishes; orders that expire, fail or refund never receive one.
The CEX deposit address where the user must send funds. Omitted on multiswap orders whose per-order initialization did not complete.