Skip to content

Get Funding Rate

Retrieve current funding rates for perpetual markets. This is a public endpoint that returns market-wide funding rate information without requiring authentication.

Endpoint

POST https://papi.synthetix.io/v1/info

Request

Request Format

{
  "params": {
    "action": "getFundingRate",
    "symbol": "BTC-USDT"
  }
}

Request Parameters

ParameterTypeRequiredDescription
params.actionstringYesMust be "getFundingRate"
params.symbolstringYesTrading pair symbol (e.g., "BTC-USDT"). Normalized to canonical uppercase form — lowercase input (e.g., "btc-usdt") is accepted and normalized automatically.

Example Request

cURL

curl -X POST https://papi.synthetix.io/info \
  -H "Content-Type: application/json" \
  -d '{
    "params": {
      "action": "getFundingRate",
      "symbol": "BTC-USDT"
    }
  }'

JavaScript

const response = await fetch('https://papi.synthetix.io/info', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    params: {
      action: 'getFundingRate',
      symbol: 'BTC-USDT'
    }
  })
});
 
const data = await response.json();
console.log(data);

Python

import requests
 
response = requests.post('https://papi.synthetix.io/info',
    json={
        "params": {
            "action": "getFundingRate",
            "symbol": "BTC-USDT"
        }
    }
)
 
data = response.json()
print(data)

Response

Success Response

{
  "status": "ok",
  "response": {
    "symbol": "BTC-USDT",
    "estimatedFundingRate": "0.000010960225996",
    "lastSettlementRate": "0.00001250",
    "lastSettlementTime": 1735689600000,
    "nextFundingTime": 1735693200000,
    "fundingInterval": 3600000
  },
  "request_id": "5ccf215d37e3ae6d"
}

Funding Rate Object

FieldTypeDescription
symbolstringTrading pair symbol (e.g., "BTC-USDT")
estimatedFundingRatestringEstimated funding rate for the next settlement period (1-hour rolling TWAP, not annualized)
lastSettlementRatestringThe actual funding rate from the most recent settlement (what users were charged)
lastSettlementTimeintegerUnix milliseconds timestamp of when the last funding settlement occurred
nextFundingTimeintegerUnix milliseconds timestamp of the next funding settlement
fundingIntervalintegerFunding interval in milliseconds (typically 3600000 for 1 hour)

Note: Funding rates are expressed as 1-hour rates.

Understanding the Fields:

  • estimatedFundingRate: The predicted rate for the upcoming settlement, calculated as a rolling 1-hour TWAP. This is what traders should use to estimate their next funding payment.
  • lastSettlementRate: The rate that was actually applied at the last settlement. Use this for historical analysis or to verify past funding payments.

Note on lastSettlementTime: For newly listed markets that have not yet had a funding settlement, lastSettlementTime is returned as 0. Check for 0 before interpreting this value as a real settlement timestamp.

Funding Rate Calculation

The funding rate is calculated using:

  • Premium Rate: Difference between perpetual and spot prices
  • Interest Rate: Typically 0.01% per 1-hour period
  • Dampening Factor: Applied to smooth rate changes

Formula: Funding Rate = Premium Rate + clamp(Interest Rate - Premium Rate, -0.05%, 0.05%)

Understanding Funding Payments

  • Positive funding rate: Long positions pay short positions
  • Negative funding rate: Short positions pay long positions
  • Payment frequency: Every 1 hour (hourly basis)
  • Rate basis: 1-hour rate (multiply by 24 for daily, 1095 for annual)

:::info Rate Limits The Synthetix API enforces rate limits to ensure fair usage and system stability:

  • Order Placement: 100 orders per second per subaccount
  • WebSocket Connections: 100 connections per IP address
  • WebSocket Subscriptions: 1000 subscriptions per IP address

See Rate Limits for detailed information and best practices. :::

Error Responses

Error CodeDescriptionRetryable
UNAUTHORIZEDEIP-712 signature validation failedNo
VALIDATION_ERRORRequest validation failedNo
MISSING_REQUIRED_FIELDRequired field is missingNo
INVALID_FORMATField format is invalidNo
INVALID_VALUEInvalid parameter valueNo
RATE_LIMIT_EXCEEDEDToo many requests in time windowYes
INSUFFICIENT_MARGINNot enough margin for tradeNo
ORDER_NOT_FOUNDOrder does not existNo
OPERATION_TIMEOUTOperation timed outYes

Endpoint-Specific Errors

HTTP StatusError CodeDescriptionSolution
400VALIDATION_ERRORSymbol is missing, empty, or not a valid market symbol formatProvide a valid symbol (e.g., "BTC-USDT"). Symbols are accepted in any case and normalized automatically.
404NOT_FOUNDNo funding rate data found for the requested symbolVerify the symbol is an active market using getMarkets

Use Cases

Real-Time Funding Monitoring

// Monitor funding rates for risk management
const symbols = ['BTC-USDT', 'ETH-USDT', 'SOL-USDT'];
const fundingRates = await Promise.all(
  symbols.map(symbol => getFundingRate(symbol))
);

Funding Rate Alerts

// Set up alerts for extreme funding rates
if (Math.abs(parseFloat(fundingRate)) > 0.01) {
  console.log(`High funding rate alert: ${symbol} at ${fundingRate}`);
}

Related Endpoints