Funding rates
curl --request GET \
--url https://api.polynode.dev/v3/perps/funding/{instrument} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/perps/funding/{instrument}"
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/perps/funding/{instrument}', 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/perps/funding/{instrument}",
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/perps/funding/{instrument}"
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/perps/funding/{instrument}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/perps/funding/{instrument}")
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{
"data": [
{
"funding_rate": "0.0000125",
"timestamp": 1783738800083
},
{
"funding_rate": "0.0000125",
"timestamp": 1783735200089
},
{
"funding_rate": "0.0000125",
"timestamp": 1783731600025
}
],
"instrument_id": 6,
"more": true,
"symbol": "BTC-USD"
}Perps Market Data
Funding Rates
Hourly funding-rate history, newest first. Window with start_timestamp/end_timestamp (Unix ms).
GET
/
v3
/
perps
/
funding
/
{instrument}
Funding rates
curl --request GET \
--url https://api.polynode.dev/v3/perps/funding/{instrument} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/perps/funding/{instrument}"
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/perps/funding/{instrument}', 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/perps/funding/{instrument}",
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/perps/funding/{instrument}"
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/perps/funding/{instrument}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/perps/funding/{instrument}")
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{
"data": [
{
"funding_rate": "0.0000125",
"timestamp": 1783738800083
},
{
"funding_rate": "0.0000125",
"timestamp": 1783735200089
},
{
"funding_rate": "0.0000125",
"timestamp": 1783731600025
}
],
"instrument_id": 6,
"more": true,
"symbol": "BTC-USD"
}Newest first, one entry per hourly funding event, with
Responses carry a
instrument_id/symbol alongside the data.
Query parameters
| Parameter | Description |
|---|---|
after / before | Time window (Unix seconds or ms, detected automatically) |
limit | Max rows (default 500, up to 5000) |
start_timestamp / end_timestamp | Legacy aliases of after / before (Unix ms) |
more flag; page older history by moving before to the oldest timestamp you’ve received.
The current live rate and the next funding time are on the ticker. Rates are per funding interval (hourly) — multiply by 24×365 for an annualized figure.Authorizations
Path Parameters
Instrument id (e.g. 6), symbol (BTC-USD), or bare asset (btc).
Query Parameters
Window start, Unix ms (legacy alias of after).
Window end, Unix ms (legacy alias of before).
Only rows after this time (Unix seconds or ms). Alias of start_timestamp.
Only rows before this time (Unix seconds or ms). Alias of end_timestamp.
Max rows to return (default 500, up to 5000).
Response
200 - application/json
Success

