Wallet Credit Totals
curl --request GET \
--url https://api.polynode.dev/v3/wallets/{addr}/credits/totals \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/wallets/{addr}/credits/totals"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.polynode.dev/v3/wallets/{addr}/credits/totals', 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.polynode.dev/v3/wallets/{addr}/credits/totals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.polynode.dev/v3/wallets/{addr}/credits/totals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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.polynode.dev/v3/wallets/{addr}/credits/totals")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/wallets/{addr}/credits/totals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"end_ts": null,
"identity": {
"eoa": "0xafcd9f5f78cb559c99d93f1914880df74cc3fc21",
"other_wallets": [],
"username": "swisstony",
"wallet_type": "safe",
"deployed": true,
"current": true,
"wallet_details": [
{
"address": "0x204f72f35326db932158cba6adff0b9a1da95e14",
"wallet_type": "safe",
"deployed": true,
"current": true
}
]
},
"start_ts": null,
"total_amount": "1667868.567600",
"totals": {
"maker_rebate": {
"amount": "303821.696700",
"count": 130,
"first_ts": 1772075366,
"last_ts": 1783730716
},
"taker_rebate": {
"amount": "1364046.870900",
"count": 39,
"first_ts": 1781914210,
"last_ts": 1783728617
}
},
"wallet": "0x204f72f35326db932158cba6adff0b9a1da95e14"
}Credits API Reference
Wallet Credit Totals
Lifetime or time-windowed totals per credit type for one wallet, in one call. Polymarket’s own API only exposes these as a raw activity feed you would have to page and sum yourself.
GET
/
v3
/
wallets
/
{addr}
/
credits
/
totals
Wallet Credit Totals
curl --request GET \
--url https://api.polynode.dev/v3/wallets/{addr}/credits/totals \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/wallets/{addr}/credits/totals"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.polynode.dev/v3/wallets/{addr}/credits/totals', 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.polynode.dev/v3/wallets/{addr}/credits/totals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.polynode.dev/v3/wallets/{addr}/credits/totals"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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.polynode.dev/v3/wallets/{addr}/credits/totals")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/wallets/{addr}/credits/totals")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"end_ts": null,
"identity": {
"eoa": "0xafcd9f5f78cb559c99d93f1914880df74cc3fc21",
"other_wallets": [],
"username": "swisstony",
"wallet_type": "safe",
"deployed": true,
"current": true,
"wallet_details": [
{
"address": "0x204f72f35326db932158cba6adff0b9a1da95e14",
"wallet_type": "safe",
"deployed": true,
"current": true
}
]
},
"start_ts": null,
"total_amount": "1667868.567600",
"totals": {
"maker_rebate": {
"amount": "303821.696700",
"count": 130,
"first_ts": 1772075366,
"last_ts": 1783730716
},
"taker_rebate": {
"amount": "1364046.870900",
"count": 39,
"first_ts": 1781914210,
"last_ts": 1783728617
}
},
"wallet": "0x204f72f35326db932158cba6adff0b9a1da95e14"
}Total credits received by a wallet, per program, in one call. Add
Rebates only, June 2026:
Totals are summed per program across the combined wallets.
start_ts/end_ts for time-windowed totals (for example, rebates earned this month).
The response includes an
identity block with username, controlling eoa, wallet_type, deployed, current, wallet_details, and other_wallets. wallet_details separates wallet type from deployment status and identifies the account’s current trading wallet. Polymarket’s own API does not expose this anywhere.Owner addresses. Pass an owner EOA as the wallet address and the response combines the EOA’s Polymarket wallets (Safe, proxy, deposit wallets) that have data for this endpoint. Passing a Safe, proxy or deposit wallet returns just that wallet, as before. Combined responses list the combined wallets in
wallets. See Owner addresses.Credit types
Every credits endpoint accepts these values intype/types:
| Value | Program |
|---|---|
reward | Liquidity rewards |
yield | Yield on balances |
maker_rebate | Maker rebates |
taker_rebate | Taker rebates |
referral_reward | Referral rewards |
types accepts a comma-separated set (types=maker_rebate,taker_rebate) or all.
Examples
All five programs at once:curl "https://api.polynode.dev/v3/wallets/0x204f72f35326db932158cba6adff0b9a1da95e14/credits/totals" \
-H "x-api-key: $POLYNODE_API_KEY"
curl "https://api.polynode.dev/v3/wallets/0x204f72f35326db932158cba6adff0b9a1da95e14/credits/totals?types=maker_rebate,taker_rebate&start_ts=1780272000&end_ts=1782950400" \
-H "x-api-key: $POLYNODE_API_KEY"
Owner address fields
Present only when you pass an owner EOA. See Owner addresses.| Field | Type | Description |
|---|---|---|
wallets | array | The combined wallets, in a fixed order, each {wallet, type} with type one of eoa, safe, proxy, or deposit_wallet |
wallet stays the address you passed, and identity describes that address.Authorizations
Path Parameters
Wallet (proxy) address, or an owner EOA to combine every Polymarket wallet it owns.
Query Parameters
Comma-separated set of credit types (One of reward, yield, maker_rebate, taker_rebate, referral_reward), or all for every type.
Unix seconds start bound (inclusive).
Unix seconds end bound (inclusive).
Response
200 - application/json
Success
Owner-address responses add the optional fields below. See the page for the full response.
Present only when you pass an owner EOA: the combined wallets, in a fixed order.
Show child attributes
Show child attributes

