curl --request GET \
--url https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily"
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-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily', 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.hayinsights.com/openapi/v1/macro/fed-funds/us/daily",
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-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily"
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-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily")
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{
"success": true,
"statusCode": 200,
"data": {
"country": "us",
"period": "1Y",
"from": "2025-11-07",
"to": "2026-11-06",
"latestDate": "2026-11-06",
"knowledgeAt": "2026-11-07T14:12:03.000Z",
"wasRestated": false,
"points": [
{
"date": "2026-10-28",
"effr": 3.88,
"p01": 3.83,
"p25": 3.87,
"p75": 3.89,
"p99": 3.95,
"volumeBn": 115,
"targetLow": 3.75,
"targetHigh": 4,
"iorb": 3.9,
"spreadIorbBp": -2,
"reserveRate": "IORB"
},
{
"date": "2026-10-29",
"effr": 3.88,
"p01": 3.83,
"p25": 3.87,
"p75": 3.89,
"p99": 3.94,
"volumeBn": 117,
"targetLow": 3.75,
"targetHigh": 4,
"iorb": 3.9,
"spreadIorbBp": -2,
"reserveRate": "IORB"
},
{
"date": "2026-11-06",
"effr": 3.88,
"p01": 3.82,
"p25": 3.86,
"p75": 3.89,
"p99": 3.96,
"volumeBn": 112,
"targetLow": 3.75,
"targetHigh": 4,
"iorb": null,
"spreadIorbBp": null,
"reserveRate": null
}
],
"fomcDecisions": [
{
"decisionDate": "2026-10-28",
"effectiveDate": "2026-10-29",
"action": "HOLD",
"changeBp": 0
}
]
},
"meta": {
"source": [
"Federal Reserve Bank of New York — Effective Federal Funds Rate (Markets Data API)",
"FRED (St. Louis Fed) — IORB, IOER and the federal funds target range"
],
"as_of": "2026-11-06",
"unit": {
"rate": "percent_per_annum",
"volumeBn": "usd_billion",
"spreadIorbBp": "basis_points"
},
"knowledge_at": "2026-11-07T14:12:03.000Z",
"classification": {
"RAW": [
"effr",
"p01",
"p25",
"p75",
"p99",
"volumeBn",
"targetLow",
"targetHigh",
"iorb"
],
"DERIVED": [
"reserveRate"
],
"COMPUTED": [
"spreadIorbBp"
]
},
"formula_version": {
"spreadIorbBp": "v1: (effr - iorb) * 100"
},
"was_restated": false,
"terms_notice": "The Effective Federal Funds Rate (EFFR) is subject to the Terms of Use posted at newyorkfed.org. The New York Fed is not responsible for publication of the EFFR by HayInsights, does not sanction or endorse any particular republication, and has no liability for your use.",
"served_from_cache": false,
"cache_expires_at": "2026-11-08T02:12:03.000Z",
"timestamp": "2026-11-07T14:12:03.000Z"
}
}{
"success": false,
"statusCode": 400,
"error": {
"code": "INTERNAL_ERROR",
"message": [
"Invalid type parameter. Must be \"gdp\", \"cpi\", \"pce\", or \"import-export\"",
"Type parameter is required"
]
},
"meta": {
"error": "Bad Request",
"statusCode": 400,
"timestamp": "2026-06-19T08:34:08.081Z"
}
}{
"success": false,
"statusCode": 401,
"error": {
"code": "API_KEY_INVALID",
"message": "Invalid API key"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.023Z"
}
}{
"success": false,
"statusCode": 403,
"error": {
"code": "FEATURE_NOT_IN_PLAN",
"message": "Your plan does not include this feature"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.100Z"
}
}{
"success": false,
"statusCode": 429,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded"
},
"meta": {
"timestamp": "2026-06-19T08:34:09.000Z"
}
}{
"success": false,
"statusCode": 500,
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
},
"meta": {
"timestamp": "2026-06-19T08:34:10.000Z"
}
}US Fed Funds rate — daily EFFR, percentiles, target range and IORB
Daily Effective Federal Funds Rate (EFFR) for the United States, with the distribution of the same day’s trades (1st, 25th, 75th and 99th percentiles and volume), the FOMC target range in force, the rate the Fed pays on reserves (IORB, IOER before 2021-07-29) and the EFFR − IORB spread in basis points.
points has one entry per New York Fed business day, oldest first; days the Fed
does not publish have no entry. A figure that is not out yet is null — never 0
(for example IORB on the newest day before FRED updates, which also leaves
spreadIorbBp null). fomcDecisions lists the FOMC decisions whose effective
date falls in the window, for drawing vertical markers.
The New York Fed publishes day D at about 9:00 a.m. New York time on business day D+1. History starts on 2016-03-01, when the New York Fed changed the EFFR’s source and method; percentiles and volume before that date are not comparable.
Terms of use. meta.terms_notice carries the notice the New York Fed requires
next to any EFFR figure you publish.
Sources: Federal Reserve Bank of New York (EFFR, percentiles, volume); FRED, Federal Reserve Bank of St. Louis (IORB, IOER, target range).
curl --request GET \
--url https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily"
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-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily', 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.hayinsights.com/openapi/v1/macro/fed-funds/us/daily",
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-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily"
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-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/daily")
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{
"success": true,
"statusCode": 200,
"data": {
"country": "us",
"period": "1Y",
"from": "2025-11-07",
"to": "2026-11-06",
"latestDate": "2026-11-06",
"knowledgeAt": "2026-11-07T14:12:03.000Z",
"wasRestated": false,
"points": [
{
"date": "2026-10-28",
"effr": 3.88,
"p01": 3.83,
"p25": 3.87,
"p75": 3.89,
"p99": 3.95,
"volumeBn": 115,
"targetLow": 3.75,
"targetHigh": 4,
"iorb": 3.9,
"spreadIorbBp": -2,
"reserveRate": "IORB"
},
{
"date": "2026-10-29",
"effr": 3.88,
"p01": 3.83,
"p25": 3.87,
"p75": 3.89,
"p99": 3.94,
"volumeBn": 117,
"targetLow": 3.75,
"targetHigh": 4,
"iorb": 3.9,
"spreadIorbBp": -2,
"reserveRate": "IORB"
},
{
"date": "2026-11-06",
"effr": 3.88,
"p01": 3.82,
"p25": 3.86,
"p75": 3.89,
"p99": 3.96,
"volumeBn": 112,
"targetLow": 3.75,
"targetHigh": 4,
"iorb": null,
"spreadIorbBp": null,
"reserveRate": null
}
],
"fomcDecisions": [
{
"decisionDate": "2026-10-28",
"effectiveDate": "2026-10-29",
"action": "HOLD",
"changeBp": 0
}
]
},
"meta": {
"source": [
"Federal Reserve Bank of New York — Effective Federal Funds Rate (Markets Data API)",
"FRED (St. Louis Fed) — IORB, IOER and the federal funds target range"
],
"as_of": "2026-11-06",
"unit": {
"rate": "percent_per_annum",
"volumeBn": "usd_billion",
"spreadIorbBp": "basis_points"
},
"knowledge_at": "2026-11-07T14:12:03.000Z",
"classification": {
"RAW": [
"effr",
"p01",
"p25",
"p75",
"p99",
"volumeBn",
"targetLow",
"targetHigh",
"iorb"
],
"DERIVED": [
"reserveRate"
],
"COMPUTED": [
"spreadIorbBp"
]
},
"formula_version": {
"spreadIorbBp": "v1: (effr - iorb) * 100"
},
"was_restated": false,
"terms_notice": "The Effective Federal Funds Rate (EFFR) is subject to the Terms of Use posted at newyorkfed.org. The New York Fed is not responsible for publication of the EFFR by HayInsights, does not sanction or endorse any particular republication, and has no liability for your use.",
"served_from_cache": false,
"cache_expires_at": "2026-11-08T02:12:03.000Z",
"timestamp": "2026-11-07T14:12:03.000Z"
}
}{
"success": false,
"statusCode": 400,
"error": {
"code": "INTERNAL_ERROR",
"message": [
"Invalid type parameter. Must be \"gdp\", \"cpi\", \"pce\", or \"import-export\"",
"Type parameter is required"
]
},
"meta": {
"error": "Bad Request",
"statusCode": 400,
"timestamp": "2026-06-19T08:34:08.081Z"
}
}{
"success": false,
"statusCode": 401,
"error": {
"code": "API_KEY_INVALID",
"message": "Invalid API key"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.023Z"
}
}{
"success": false,
"statusCode": 403,
"error": {
"code": "FEATURE_NOT_IN_PLAN",
"message": "Your plan does not include this feature"
},
"meta": {
"timestamp": "2026-06-19T08:34:08.100Z"
}
}{
"success": false,
"statusCode": 429,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded"
},
"meta": {
"timestamp": "2026-06-19T08:34:09.000Z"
}
}{
"success": false,
"statusCode": 500,
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
},
"meta": {
"timestamp": "2026-06-19T08:34:10.000Z"
}
}Authorizations
Your HayInsights API key (prefixed apk_). Create and manage keys in the
HayInsights dashboard (Account → API keys).
Send it in the X-API-Key header on every request to /openapi/v1/*.
Which data domains you may access and your request quota are both governed by
the subscription plan attached to the key — see the Plans & features and
Rate limits guides.
Query Parameters
Response
Daily Fed Funds series for the requested window.
Standard success envelope shared by every endpoint. Each operation's response
wrapper extends this (via allOf) and adds a typed data property.