Skip to main content
POST
/
wallet
/
rescue
Rescue token
curl --request POST \
  --url https://api.onswitch.xyz/wallet/rescue \
  --header 'Content-Type: application/json' \
  --header 'x-service-key: <api-key>' \
  --data '
{
  "wallet_id": "68d4f2a91eb37c15b8e3a4f7",
  "blockchain": "BASE",
  "token_address": "0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d",
  "recipient": "0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9"
}
'
import requests

url = "https://api.onswitch.xyz/wallet/rescue"

payload = {
"wallet_id": "68d4f2a91eb37c15b8e3a4f7",
"blockchain": "BASE",
"token_address": "0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d",
"recipient": "0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9"
}
headers = {
"x-service-key": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'x-service-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
wallet_id: '68d4f2a91eb37c15b8e3a4f7',
blockchain: 'BASE',
token_address: '0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d',
recipient: '0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9'
})
};

fetch('https://api.onswitch.xyz/wallet/rescue', 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.onswitch.xyz/wallet/rescue",
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([
'wallet_id' => '68d4f2a91eb37c15b8e3a4f7',
'blockchain' => 'BASE',
'token_address' => '0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d',
'recipient' => '0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-service-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.onswitch.xyz/wallet/rescue"

payload := strings.NewReader("{\n \"wallet_id\": \"68d4f2a91eb37c15b8e3a4f7\",\n \"blockchain\": \"BASE\",\n \"token_address\": \"0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d\",\n \"recipient\": \"0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-service-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.onswitch.xyz/wallet/rescue")
.header("x-service-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallet_id\": \"68d4f2a91eb37c15b8e3a4f7\",\n \"blockchain\": \"BASE\",\n \"token_address\": \"0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d\",\n \"recipient\": \"0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.onswitch.xyz/wallet/rescue")

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

request = Net::HTTP::Post.new(url)
request["x-service-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"wallet_id\": \"68d4f2a91eb37c15b8e3a4f7\",\n \"blockchain\": \"BASE\",\n \"token_address\": \"0xe3cf8dbcbdc9b220ddead0bd6342e245daff934d\",\n \"recipient\": \"0x2E1C4bD954853fe0dD025dCc74A9f5a67aad95f9\"\n}"

response = http.request(request)
puts response.read_body
{
  "success": true
}
{
"success": false,
"message": "amount must be greater than 0 for the selected corridor",
"timestamp": "2026-04-18T14:22:08.631Z",
"data": null
}

Authorizations

x-service-key
string
header
required

Service key for API authentication

Body

application/json
wallet_id
string
required

Unique identifier for the wallet

Pattern: ^[a-f0-9]{24}$
blockchain
enum<string>
required

Blockchain where the token is held

Available options:
BASE,
ETHEREUM,
SOLANA,
POLYGON,
BSC,
ARBITRUM,
OPTIMISM,
AVALANCHE,
MONAD,
GNOSIS,
PLASMA
token_address
string
required

Token contract address (EVM 0x... or Solana base58)

recipient
string
required

Recipient wallet address (format must match blockchain)

Response

Token rescue initiated successfully

success
boolean
required

Whether the rescue request was accepted