curl --request POST \
--url https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"preimage": "<string>",
"pubNonce": "<string>",
"index": 1,
"signatureHash": "<string>",
"transaction": "<string>"
}
'import requests
url = "https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim"
payload = {
"preimage": "<string>",
"pubNonce": "<string>",
"index": 1,
"signatureHash": "<string>",
"transaction": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
preimage: '<string>',
pubNonce: '<string>',
index: 1,
signatureHash: '<string>',
transaction: '<string>'
})
};
fetch('https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim', 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://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim",
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([
'preimage' => '<string>',
'pubNonce' => '<string>',
'index' => 1,
'signatureHash' => '<string>',
'transaction' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim"
payload := strings.NewReader("{\n \"preimage\": \"<string>\",\n \"pubNonce\": \"<string>\",\n \"index\": 1,\n \"signatureHash\": \"<string>\",\n \"transaction\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"preimage\": \"<string>\",\n \"pubNonce\": \"<string>\",\n \"index\": 1,\n \"signatureHash\": \"<string>\",\n \"transaction\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"preimage\": \"<string>\",\n \"pubNonce\": \"<string>\",\n \"index\": 1,\n \"signatureHash\": \"<string>\",\n \"transaction\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"partialSignature": "<string>",
"pubNonce": "<string>"
}{
"error": "<string>",
"details": "<string>"
}{
"error": "<string>",
"details": "<string>"
}{
"error": "<string>",
"details": "<string>"
}{
"error": "<string>",
"details": "<string>"
}Cooperative claim (reverse)
Claim through the cheaper key path. Send your preimage, your MuSig2 public nonce, and the claim transaction (or its sighash); the maker returns its nonce and partial signature, which you aggregate and broadcast. Revealing the preimage lets the maker settle your payment.
curl --request POST \
--url https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"preimage": "<string>",
"pubNonce": "<string>",
"index": 1,
"signatureHash": "<string>",
"transaction": "<string>"
}
'import requests
url = "https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim"
payload = {
"preimage": "<string>",
"pubNonce": "<string>",
"index": 1,
"signatureHash": "<string>",
"transaction": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
preimage: '<string>',
pubNonce: '<string>',
index: 1,
signatureHash: '<string>',
transaction: '<string>'
})
};
fetch('https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim', 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://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim",
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([
'preimage' => '<string>',
'pubNonce' => '<string>',
'index' => 1,
'signatureHash' => '<string>',
'transaction' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim"
payload := strings.NewReader("{\n \"preimage\": \"<string>\",\n \"pubNonce\": \"<string>\",\n \"index\": 1,\n \"signatureHash\": \"<string>\",\n \"transaction\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"preimage\": \"<string>\",\n \"pubNonce\": \"<string>\",\n \"index\": 1,\n \"signatureHash\": \"<string>\",\n \"transaction\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://maker.signet.kaleidoswap.com/v2/swap/reverse/{id}/claim")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"preimage\": \"<string>\",\n \"pubNonce\": \"<string>\",\n \"index\": 1,\n \"signatureHash\": \"<string>\",\n \"transaction\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"partialSignature": "<string>",
"pubNonce": "<string>"
}{
"error": "<string>",
"details": "<string>"
}{
"error": "<string>",
"details": "<string>"
}{
"error": "<string>",
"details": "<string>"
}{
"error": "<string>",
"details": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Swap id (ULID).
Body
Body of POST /v2/swap/reverse/{id}/claim — Boltz-shaped, camelCase. Sighash sourcing: callers may either send the raw unsigned tx
(Boltz convention) — transaction (hex) + index — and the server
computes the BIP-341 key-path sighash, or send signatureHash
precomputed locally. The server prefers transaction when both are
present. Missing both is 400 missing_sighash.
The 32-byte preimage that satisfies the swap's preimageHash. The
maker uses this to settle the LN hold invoice.
The taker's MuSig2 pub nonce, 66 bytes hex.
Input index in the claim transaction. Defaults to 0 — most cooperative claim txs only spend the single lockup input.
x >= 032-byte BIP-341 sighash the taker wants the maker to partial-sign. Optional when transaction is provided; required otherwise.
Hex-encoded unsigned claim transaction. If present, the server
computes the sighash from this + index against the swap's
persisted lockup output, and any signatureHash is ignored.
Response
Maker's pub nonce + partial signature.
Was this page helpful?