curl --request GET \
--url https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/fomc-meetings \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/fomc-meetings"
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/fomc-meetings', 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/fomc-meetings",
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/fomc-meetings"
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/fomc-meetings")
.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/fomc-meetings")
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",
"years": [
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026,
2027
],
"year": 2026,
"currentTargetRange": {
"date": "2026-11-06",
"low": 3.75,
"high": 4
},
"nextMeeting": {
"meetingStartDate": "2026-12-08",
"decisionDate": "2026-12-09",
"meetingType": "scheduled",
"status": "upcoming",
"hasSep": true,
"announcementAt": "2026-12-09T19:00:00.000Z",
"effectiveDate": null,
"action": null,
"changeBp": null,
"targetRangeLow": null,
"targetRangeHigh": null,
"effrOnEffectiveDate": null,
"statementUrl": null,
"implementationNoteUrl": null
},
"upcoming": [
{
"meetingStartDate": "2026-12-08",
"decisionDate": "2026-12-09",
"meetingType": "scheduled",
"status": "upcoming",
"hasSep": true,
"announcementAt": "2026-12-09T19:00:00.000Z",
"effectiveDate": null,
"action": null,
"changeBp": null,
"targetRangeLow": null,
"targetRangeHigh": null,
"effrOnEffectiveDate": null,
"statementUrl": null,
"implementationNoteUrl": null
}
],
"meetings": [
{
"meetingStartDate": "2026-12-08",
"decisionDate": "2026-12-09",
"meetingType": "scheduled",
"status": "upcoming",
"hasSep": true,
"announcementAt": "2026-12-09T19:00:00.000Z",
"effectiveDate": null,
"action": null,
"changeBp": null,
"targetRangeLow": null,
"targetRangeHigh": null,
"effrOnEffectiveDate": null,
"statementUrl": null,
"implementationNoteUrl": null
},
{
"meetingStartDate": "2026-10-27",
"decisionDate": "2026-10-28",
"meetingType": "scheduled",
"status": "decided",
"hasSep": false,
"announcementAt": "2026-10-28T18:00:00.000Z",
"effectiveDate": "2026-10-29",
"action": "HOLD",
"changeBp": 0,
"targetRangeLow": 3.75,
"targetRangeHigh": 4,
"effrOnEffectiveDate": 3.88,
"statementUrl": "https://www.federalreserve.gov/newsevents/pressreleases/monetary20261028a.htm",
"implementationNoteUrl": "https://www.federalreserve.gov/newsevents/pressreleases/monetary20261028a1.htm"
}
]
},
"meta": {
"source": [
"Federal Reserve Board — FOMC meeting calendar",
"Federal Reserve Bank of New York — Effective Federal Funds Rate (Markets Data API)"
],
"as_of": "2026-11-06",
"unit": {
"rate": "percent_per_annum",
"changeBp": "basis_points"
},
"classification": {
"RAW": [
"meetingStartDate",
"decisionDate",
"meetingType",
"statementUrl",
"implementationNoteUrl",
"targetRangeLow",
"targetRangeHigh",
"effrOnEffectiveDate"
],
"DERIVED": [
"effectiveDate",
"status",
"hasSep",
"announcementAt"
],
"COMPUTED": [
"action",
"changeBp"
]
},
"formula_version": {
"action": "v1",
"changeBp": "v1: (target_high after - target_high before) * 100"
},
"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": true,
"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 FOMC meeting schedule and rate decisions
The Federal Open Market Committee’s meeting calendar with the result of each meeting: the decision (hike, cut or hold), the change in basis points, and the target range and EFFR on the first business day after the decision.
meetings lists one year’s meetings, newest first; pick the year with year
(values in years). nextMeeting and upcoming always cover every meeting that
has not happened yet, whatever year is, and currentTargetRange is the range in
force on the latest business day on record.
A meeting is upcoming until its decision day has passed (New York date). Right
after that, the result fields can stay null until the next collection run. The
first meeting on record (2016-01-27) has action: null — there is no earlier range
to compare with. Cancelled meetings (2020-03-17/18) are left out.
Scheduled meetings announce at 2:00 p.m. New York time on the decision day;
announcementAt gives that moment in UTC. Unscheduled meetings have no fixed time.
Sources: Federal Reserve Board (FOMC calendar, statements); Federal Reserve Bank of New York (EFFR).
curl --request GET \
--url https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/fomc-meetings \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-v2.hayinsights.com/openapi/v1/macro/fed-funds/us/fomc-meetings"
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/fomc-meetings', 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/fomc-meetings",
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/fomc-meetings"
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/fomc-meetings")
.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/fomc-meetings")
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",
"years": [
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025,
2026,
2027
],
"year": 2026,
"currentTargetRange": {
"date": "2026-11-06",
"low": 3.75,
"high": 4
},
"nextMeeting": {
"meetingStartDate": "2026-12-08",
"decisionDate": "2026-12-09",
"meetingType": "scheduled",
"status": "upcoming",
"hasSep": true,
"announcementAt": "2026-12-09T19:00:00.000Z",
"effectiveDate": null,
"action": null,
"changeBp": null,
"targetRangeLow": null,
"targetRangeHigh": null,
"effrOnEffectiveDate": null,
"statementUrl": null,
"implementationNoteUrl": null
},
"upcoming": [
{
"meetingStartDate": "2026-12-08",
"decisionDate": "2026-12-09",
"meetingType": "scheduled",
"status": "upcoming",
"hasSep": true,
"announcementAt": "2026-12-09T19:00:00.000Z",
"effectiveDate": null,
"action": null,
"changeBp": null,
"targetRangeLow": null,
"targetRangeHigh": null,
"effrOnEffectiveDate": null,
"statementUrl": null,
"implementationNoteUrl": null
}
],
"meetings": [
{
"meetingStartDate": "2026-12-08",
"decisionDate": "2026-12-09",
"meetingType": "scheduled",
"status": "upcoming",
"hasSep": true,
"announcementAt": "2026-12-09T19:00:00.000Z",
"effectiveDate": null,
"action": null,
"changeBp": null,
"targetRangeLow": null,
"targetRangeHigh": null,
"effrOnEffectiveDate": null,
"statementUrl": null,
"implementationNoteUrl": null
},
{
"meetingStartDate": "2026-10-27",
"decisionDate": "2026-10-28",
"meetingType": "scheduled",
"status": "decided",
"hasSep": false,
"announcementAt": "2026-10-28T18:00:00.000Z",
"effectiveDate": "2026-10-29",
"action": "HOLD",
"changeBp": 0,
"targetRangeLow": 3.75,
"targetRangeHigh": 4,
"effrOnEffectiveDate": 3.88,
"statementUrl": "https://www.federalreserve.gov/newsevents/pressreleases/monetary20261028a.htm",
"implementationNoteUrl": "https://www.federalreserve.gov/newsevents/pressreleases/monetary20261028a1.htm"
}
]
},
"meta": {
"source": [
"Federal Reserve Board — FOMC meeting calendar",
"Federal Reserve Bank of New York — Effective Federal Funds Rate (Markets Data API)"
],
"as_of": "2026-11-06",
"unit": {
"rate": "percent_per_annum",
"changeBp": "basis_points"
},
"classification": {
"RAW": [
"meetingStartDate",
"decisionDate",
"meetingType",
"statementUrl",
"implementationNoteUrl",
"targetRangeLow",
"targetRangeHigh",
"effrOnEffectiveDate"
],
"DERIVED": [
"effectiveDate",
"status",
"hasSep",
"announcementAt"
],
"COMPUTED": [
"action",
"changeBp"
]
},
"formula_version": {
"action": "v1",
"changeBp": "v1: (target_high after - target_high before) * 100"
},
"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": true,
"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
FOMC calendar and the meetings of the requested year.
Standard success envelope shared by every endpoint. Each operation's response
wrapper extends this (via allOf) and adds a typed data property.