Skip to main content
POST
/
workflows
/
polymarket
/
withdraw
Withdraw
curl --request POST \
  --url https://api-v2.swaps.xyz/api/workflows/polymarket/withdraw \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "evmEoa": "<string>",
  "dstWalletAddress": "<string>",
  "expiration": 123,
  "signatureByEvmEoa": "<string>",
  "srcTokenAddress": "<string>"
}
'
import requests

url = "https://api-v2.swaps.xyz/api/workflows/polymarket/withdraw"

payload = {
"evmEoa": "<string>",
"dstWalletAddress": "<string>",
"expiration": 123,
"signatureByEvmEoa": "<string>",
"srcTokenAddress": "<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({
evmEoa: '<string>',
dstWalletAddress: '<string>',
expiration: 123,
signatureByEvmEoa: '<string>',
srcTokenAddress: '<string>'
})
};

fetch('https://api-v2.swaps.xyz/api/workflows/polymarket/withdraw', 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-v2.swaps.xyz/api/workflows/polymarket/withdraw",
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([
'evmEoa' => '<string>',
'dstWalletAddress' => '<string>',
'expiration' => 123,
'signatureByEvmEoa' => '<string>',
'srcTokenAddress' => '<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-v2.swaps.xyz/api/workflows/polymarket/withdraw"

payload := strings.NewReader("{\n \"evmEoa\": \"<string>\",\n \"dstWalletAddress\": \"<string>\",\n \"expiration\": 123,\n \"signatureByEvmEoa\": \"<string>\",\n \"srcTokenAddress\": \"<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-v2.swaps.xyz/api/workflows/polymarket/withdraw")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"evmEoa\": \"<string>\",\n \"dstWalletAddress\": \"<string>\",\n \"expiration\": 123,\n \"signatureByEvmEoa\": \"<string>\",\n \"srcTokenAddress\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api-v2.swaps.xyz/api/workflows/polymarket/withdraw")

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 \"evmEoa\": \"<string>\",\n \"dstWalletAddress\": \"<string>\",\n \"expiration\": 123,\n \"signatureByEvmEoa\": \"<string>\",\n \"srcTokenAddress\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "txHash": "<string>",
  "status": "<string>"
}
{
"success": false,
"error": {
"code": "<string>",
"name": "<string>",
"message": "<string>",
"title": "<string>",
"statusCode": 123,
"timestamp": "<string>",
"details": {}
}
}
{
"success": false,
"error": {
"code": "<string>",
"name": "<string>",
"message": "<string>",
"title": "<string>",
"statusCode": 123,
"timestamp": "<string>",
"details": {}
}
}
{
"success": false,
"error": {
"code": "<string>",
"name": "<string>",
"message": "<string>",
"title": "<string>",
"statusCode": 123,
"timestamp": "<string>",
"details": {}
}
}

Authorizations

x-api-key
string
header
required

Limited demo key for API Reference: 5c951bc81da566bbd030ba8e20724063.

Body

application/json
evmEoa
string
required

User's EVM wallet address (the signer)

Pattern: ^0x[a-fA-F0-9]{40}$
dstWalletAddress
string
required

Wallet address that receives the withdrawn funds

Pattern: ^0x[a-fA-F0-9]{40}$
expiration
integer
required

Unix timestamp (seconds) when the signature expires. Must be within the next ~300 seconds.

signatureByEvmEoa
string
required

EIP-712 signature by the EOA over the Withdraw typed data.

Pattern: ^0x[a-fA-F0-9]*$
srcTokenAddress
string

Optional source token address to withdraw from the proxy wallet. Always on Polygon, so only the address is needed. Defaults to pUSD collateral. Set to USDC.e to sweep funds stuck as USDC.e.

Pattern: ^0x[a-fA-F0-9]{40}$
dstToken
object

Optional destination token (address + chainId). When set, the source token is swapped into this token before delivery.

Response

Withdrawal executed successfully

txHash
string
required

Transaction hash of the withdrawal

Pattern: ^0x[a-fA-F0-9]*$
status
string
required

Status message of the withdrawal