Set Fee Policy
curl --request PUT \
--url https://trade.predexon.com/api/fees/policy \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"venue": "polymarket",
"partnerFeeBps": 100,
"partnerTreasuryAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
'import requests
url = "https://trade.predexon.com/api/fees/policy"
payload = {
"venue": "polymarket",
"partnerFeeBps": 100,
"partnerTreasuryAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
venue: 'polymarket',
partnerFeeBps: 100,
partnerTreasuryAddress: '0x1234567890abcdef1234567890abcdef12345678'
})
};
fetch('https://trade.predexon.com/api/fees/policy', 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://trade.predexon.com/api/fees/policy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'venue' => 'polymarket',
'partnerFeeBps' => 100,
'partnerTreasuryAddress' => '0x1234567890abcdef1234567890abcdef12345678'
]),
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://trade.predexon.com/api/fees/policy"
payload := strings.NewReader("{\n \"venue\": \"polymarket\",\n \"partnerFeeBps\": 100,\n \"partnerTreasuryAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://trade.predexon.com/api/fees/policy")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"venue\": \"polymarket\",\n \"partnerFeeBps\": 100,\n \"partnerTreasuryAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://trade.predexon.com/api/fees/policy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"venue\": \"polymarket\",\n \"partnerFeeBps\": 100,\n \"partnerTreasuryAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}"
response = http.request(request)
puts response.read_body{
"venue": "polymarket",
"enabled": true,
"platformFeeBps": 0,
"partnerFeeBps": 100,
"partnerTreasuryAddress": "0x1234567890abcdef1234567890abcdef12345678",
"totalFeeBps": 100
}{
"error": "insufficient_balance",
"message": "Insufficient balance: need 50.000000, have 12.500000",
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}{
"error": "insufficient_balance",
"message": "Insufficient balance: need 50.000000, have 12.500000",
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}{
"error": "insufficient_balance",
"message": "Insufficient balance: need 50.000000, have 12.500000",
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Partner Fees & Monetization
Set Fee Policy
Configure your partner markup fee for Polymarket orders
PUT
/
api
/
fees
/
policy
Set Fee Policy
curl --request PUT \
--url https://trade.predexon.com/api/fees/policy \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"venue": "polymarket",
"partnerFeeBps": 100,
"partnerTreasuryAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
'import requests
url = "https://trade.predexon.com/api/fees/policy"
payload = {
"venue": "polymarket",
"partnerFeeBps": 100,
"partnerTreasuryAddress": "0x1234567890abcdef1234567890abcdef12345678"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
venue: 'polymarket',
partnerFeeBps: 100,
partnerTreasuryAddress: '0x1234567890abcdef1234567890abcdef12345678'
})
};
fetch('https://trade.predexon.com/api/fees/policy', 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://trade.predexon.com/api/fees/policy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'venue' => 'polymarket',
'partnerFeeBps' => 100,
'partnerTreasuryAddress' => '0x1234567890abcdef1234567890abcdef12345678'
]),
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://trade.predexon.com/api/fees/policy"
payload := strings.NewReader("{\n \"venue\": \"polymarket\",\n \"partnerFeeBps\": 100,\n \"partnerTreasuryAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://trade.predexon.com/api/fees/policy")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"venue\": \"polymarket\",\n \"partnerFeeBps\": 100,\n \"partnerTreasuryAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://trade.predexon.com/api/fees/policy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"venue\": \"polymarket\",\n \"partnerFeeBps\": 100,\n \"partnerTreasuryAddress\": \"0x1234567890abcdef1234567890abcdef12345678\"\n}"
response = http.request(request)
puts response.read_body{
"venue": "polymarket",
"enabled": true,
"platformFeeBps": 0,
"partnerFeeBps": 100,
"partnerTreasuryAddress": "0x1234567890abcdef1234567890abcdef12345678",
"totalFeeBps": 100
}{
"error": "insufficient_balance",
"message": "Insufficient balance: need 50.000000, have 12.500000",
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}{
"error": "insufficient_balance",
"message": "Insufficient balance: need 50.000000, have 12.500000",
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}{
"error": "insufficient_balance",
"message": "Insufficient balance: need 50.000000, have 12.500000",
"requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}The Predexon Trading API is being retired. New signups are closed. Trading stops on July 10, 2026 — sell or close any open positions before then. After that, the API is withdrawal-only: redeem resolved positions and withdraw all funds by July 17, 2026. The read-only Data & Signals API is unaffected.
0 (disabled) or >= 10 bps when enabled. The current combined limit is 500 bps (5% - platformFeeBps + partnerFeeBps). partnerTreasuryAddress is required when partnerFeeBps > 0.
Concurrent updates may return
409 Conflict. Retry the request.Authorizations
Body
application/json
Venue to configure. Fee policies are currently Polymarket-only.
Available options:
polymarket Partner markup fee in basis points. 0 to disable, min 10 when > 0, max 500.
EVM (Polygon) address to receive partner fee revenue. Required when partnerFeeBps > 0.
Response
Fee policy updated
Whether fees are active
Platform fee in basis points
Partner markup fee in basis points (0 if not configured)
EVM address receiving partner fee revenue
Combined fee: platformFeeBps + partnerFeeBps
⌘I
