You need the Reserve Bank of India policy rate in your software—cleanly, reliably, and with dates you can trust—so you can power pricing models, dashboards, and risk analytics. By the end of this guide you will query RBI_REPO_RATE from the Interest Rates API, read latest and historical values, stream a time series, compute fluctuations and OHLC, and wire the data into your app using cURL, Python, JavaScript, or PHP.
What RBI_REPO_RATE Represents and How It Is Expressed
RBI_REPO_RATE is the Reserve Bank of India (RBI) policy repo rate—the rate at which the RBI lends to commercial banks against government securities. It is a central bank policy rate that anchors INR monetary conditions, influences bank lending rates, and cascades into loan pricing, corporate financing costs, and risk models.
In the Interest Rates API, RBI_REPO_RATE is delivered as a percentage value (e.g., 5.25 means 5.25% per annum) with effective dates. The rate is monthly in terms of publication frequency for this symbol, although the API normalizes access across endpoints for consistency with other rates. Always interpret the value as an annualized percentage.
Developers typically use RBI_REPO_RATE to:
- Set or benchmark floating-rate loan products against a policy-rate-driven base.
- Build macroeconomic dashboards that track Indian monetary policy stance.
- Calibrate ALM, treasury, and VaR models for INR exposures.
- Compute spreads between RBI_REPO_RATE and interbank or treasury yields.
All examples below use the official base URL and GET requests documented at interestratesapi.com. Authentication is the api_key query parameter; do not use headers for auth.
Latest RBI Repo Rate: Query, Parse, and Cache
Use the /api/v1/latest endpoint to retrieve the most recent value and effective date for RBI_REPO_RATE. This is ideal for pricing, dashboards, and alerts. Because RBI_REPO_RATE updates on a policy announcement cadence (monthly frequency for this symbol), you can cache the latest payload for the business day to minimize requests. If your service needs to be event-driven, poll at a modest cadence and check the dates map for updates.
Official cURL (copy/paste)
curl -s "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=RBI_REPO_RATE"
Official JSON
{
"success": true,
"date": "2026-09-30",
"base": "INR",
"rates": {
"RBI_REPO_RATE": 5.25
},
"dates": {
"RBI_REPO_RATE": "2026-09-30"
},
"currencies": {
"RBI_REPO_RATE": "INR"
},
"base_filter_note": null
}
How to read this:
rates.RBI_REPO_RATE: the annualized percentage value of the RBI repo rate.dates.RBI_REPO_RATE: the effective date for the rate value. For policy rates, this is commonly the decision/effective date. Treat this as the canonical timestamp for applying the rate in your calculations.baseandcurrencies: the currency context (INR) for this symbol.
Python (requests)
import requests
resp = requests.get(
"https://interestratesapi.com/api/v1/latest",
params={"symbols": "RBI_REPO_RATE", "api_key": "YOUR_API_KEY"},
timeout=10
)
data = resp.json()
rate = data["rates"]["RBI_REPO_RATE"]
effective_date = data["dates"]["RBI_REPO_RATE"]
currency = data["currencies"]["RBI_REPO_RATE"]
print(f"RBI_REPO_RATE: {rate}% (effective {effective_date}, currency {currency})")
JavaScript (fetch)
const url = "https://interestratesapi.com/api/v1/latest?symbols=RBI_REPO_RATE&api_key=YOUR_API_KEY";
const res = await fetch(url);
const data = await res.json();
const rate = data.rates["RBI_REPO_RATE"];
const effectiveDate = data.dates["RBI_REPO_RATE"];
const currency = data.currencies["RBI_REPO_RATE"];
console.log(`RBI_REPO_RATE: ${rate}% (effective ${effectiveDate}, currency ${currency})`);
PHP
<?php
$endpoint = "https://interestratesapi.com/api/v1/latest?symbols=RBI_REPO_RATE&api_key=YOUR_API_KEY";
$json = file_get_contents($endpoint);
$data = json_decode($json, true);
$rate = $data["rates"]["RBI_REPO_RATE"];
$effectiveDate = $data["dates"]["RBI_REPO_RATE"];
$currency = $data["currencies"]["RBI_REPO_RATE"];
echo "RBI_REPO_RATE: {$rate}% (effective {$effectiveDate}, currency {$currency})";
Tip: On days without policy changes, the latest value remains constant. Use HTTP caching on your side and respect any X-RateLimit-* headers to avoid 429s.
Discovering the Symbol Programmatically with /symbols
When you boot new environments or build symbol pickers, query /api/v1/symbols to confirm availability and metadata. RBI_REPO_RATE is categorized as central_bank and reported in INR.
cURL
Python
import requests
r = requests.get(
"https://interestratesapi.com/api/v1/symbols",
params={"category": "central_bank", "base": "INR", "api_key": "YOUR_API_KEY"},
timeout=10
)
symbols = r.json()["symbols"]
# Filter for RBI_REPO_RATE
rbi = [s for s in symbols if s["symbol"] == "RBI_REPO_RATE"]
JavaScript
const res = await fetch(
"https://interestratesapi.com/api/v1/symbols?category=central_bank&base=INR&api_key=YOUR_API_KEY"
);
const { symbols } = await res.json();
const rbi = symbols.find(s => s.symbol === "RBI_REPO_RATE");
PHP
<?php
$url = "https://interestratesapi.com/api/v1/symbols?category=central_bank&base=INR&api_key=YOUR_API_KEY";
$data = json_decode(file_get_contents($url), true);
$rbi = array_values(array_filter($data["symbols"], fn($s) => $s["symbol"] === "RBI_REPO_RATE"));
Use this endpoint to populate symbol dropdowns, validate integrations, or audit symbol metadata. See the MCP for broader documentation.
Historical RBI Repo Rate on a Specific Date
For backtesting and research, request a single date via /api/v1/historical. For monthly symbols, the API returns the last available day with data in that month.
cURL
Sample JSON
Notes:
- The value is an annualized percentage for the requested date context.
- For monthly symbols like RBI_REPO_RATE, if mid-month is requested, the last day with data in that month is applied under the hood.
- Handle 404s if the requested date predates the series start; the response may include a
detailsfield indicating available ranges.
Python
import requests
payload = {"date": "2025-06-15", "symbols": "RBI_REPO_RATE", "api_key": "YOUR_API_KEY"}
res = requests.get("https://interestratesapi.com/api/v1/historical", params=payload, timeout=10)
data = res.json()
value = data["rates"]["RBI_REPO_RATE"]
JavaScript
const params = new URLSearchParams({
date: "2025-06-15",
symbols: "RBI_REPO_RATE",
api_key: "YOUR_API_KEY"
});
const res = await fetch(`https://interestratesapi.com/api/v1/historical?${params.toString()}`);
const data = await res.json();
const value = data.rates["RBI_REPO_RATE"];
PHP
<?php
$q = http_build_query([
"date" => "2025-06-15",
"symbols" => "RBI_REPO_RATE",
"api_key" => "YOUR_API_KEY"
]);
$data = json_decode(file_get_contents("https://interestratesapi.com/api/v1/historical?$q"), true);
$value = $data["rates"]["RBI_REPO_RATE"];
Time Series for Modeling and Dashboards
Use /api/v1/timeseries to pull a range of daily records for RBI_REPO_RATE. Even for monthly symbols, the API renders a daily index with repeated values across business days, which simplifies charting and alignment with other daily series.
cURL
Sample JSON
How to use it:
rates.RBI_REPO_RATEis a date-indexed map. For policy rates, values typically remain unchanged between decisions.frequenciesclarifies the effective sampling—daily indexing for alignment, with monthly update cadence.- Aggregate to month-end if you want one value per month; otherwise, keep daily for charting consistency.
Python
import requests
import pandas as pd
params = {"start": "2025-11-01", "end": "2026-11-01", "symbols": "RBI_REPO_RATE", "api_key": "YOUR_API_KEY"}
r = requests.get("https://interestratesapi.com/api/v1/timeseries", params=params, timeout=15)
js = r.json()
series = pd.Series(js["rates"]["RBI_REPO_RATE"], name="RBI_REPO_RATE").astype(float).sort_index()
# Example: month-end resample
monthly = series.resample("M").last()
JavaScript
const url = "https://interestratesapi.com/api/v1/timeseries?start=2025-11-01&end=2026-11-01&symbols=RBI_REPO_RATE&api_key=YOUR_API_KEY";
const res = await fetch(url);
const js = await res.json();
const points = Object.entries(js.rates["RBI_REPO_RATE"]).map(([date, v]) => ({ date, value: Number(v) }));
PHP
<?php
$url = "https://interestratesapi.com/api/v1/timeseries?start=2025-11-01&end=2026-11-01&symbols=RBI_REPO_RATE&api_key=YOUR_API_KEY";
$data = json_decode(file_get_contents($url), true);
$series = $data["rates"]["RBI_REPO_RATE"]; // associative array date => value
Fluctuation: Changes, Highs, and Lows Over a Range
/api/v1/fluctuation computes summary statistics over a date range. This is helpful for alerting, month-over-month deltas, and risk threshold checks.
cURL
Sample JSON
Key fields:
change: arithmetic difference betweenend_valueandstart_value.change_pct: percentage change relative tostart_value(null if start is zero).high/low: extreme values in the range.
Python
import requests
params = {"start": "2025-11-01", "end": "2026-11-01", "symbols": "RBI_REPO_RATE", "api_key": "YOUR_API_KEY"}
res = requests.get("https://interestratesapi.com/api/v1/fluctuation", params=params, timeout=10)
fx = res.json()["rates"]["RBI_REPO_RATE"]
spread = fx["high"] - fx["low"]
JavaScript
const url = "https://interestratesapi.com/api/v1/fluctuation?start=2025-11-01&end=2026-11-01&symbols=RBI_REPO_RATE&api_key=YOUR_API_KEY";
const data = await (await fetch(url)).json();
const stats = data.rates["RBI_REPO_RATE"];
const { start_value, end_value, change, change_pct, high, low } = stats;
PHP
<?php
$q = http_build_query([
"start" => "2025-11-01",
"end" => "2026-11-01",
"symbols" => "RBI_REPO_RATE",
"api_key" => "YOUR_API_KEY"
]);
$data = json_decode(file_get_contents("https://interestratesapi.com/api/v1/fluctuation?$q"), true);
$fx = $data["rates"]["RBI_REPO_RATE"];
OHLC: Candlestick Aggregation for Policy Rate Timelines
To visualize step-wise policy moves with financial charting components, use /api/v1/ohlc. The endpoint computes OHLC aggregates from daily-indexed data on the fly. For RBI_REPO_RATE, monthly OHLC typically shows the step at the decision date.
cURL
Sample JSON
Interpretation:
open: first available business day’s value in the period.close: last available business day’s value in the period.high/low: extremes during the period.data_points: count of daily observations used for the aggregate.
Python
import requests
params = {
"symbols": "RBI_REPO_RATE",
"period": "monthly",
"start": "2025-11-01",
"end": "2026-11-01",
"api_key": "YOUR_API_KEY"
}
res = requests.get("https://interestratesapi.com/api/v1/ohlc", params=params, timeout=10)
ohlc = res.json()["rates"]["RBI_REPO_RATE"]
JavaScript
const url = "https://interestratesapi.com/api/v1/ohlc?symbols=RBI_REPO_RATE&period=monthly&start=2025-11-01&end=2026-11-01&api_key=YOUR_API_KEY";
const data = await (await fetch(url)).json();
const monthly = data.rates["RBI_REPO_RATE"];
PHP
<?php
$url = "https://interestratesapi.com/api/v1/ohlc?symbols=RBI_REPO_RATE&period=monthly&start=2025-11-01&end=2026-11-01&api_key=YOUR_API_KEY";
$data = json_decode(file_get_contents($url), true);
$bars = $data["rates"]["RBI_REPO_RATE"];
Spread and Payment Calculations Without Guessing Numbers
RBI_REPO_RATE often serves as a base for loan pricing. To compute a spread vs. another benchmark, subtract the two series for the same effective date. If both are retrieved from /latest, use their rates values and report the spread in percentage points:
spread = rate_A - rate_B(both in percentage terms).
To compute a loan’s monthly payment (e.g., EMI) from the returned rate without fabricating numbers, plug the live value you fetched into the standard annuity formula. If r_annual is the latest RBI_REPO_RATE, convert to a monthly decimal rate: i = r_annual / 100 / 12. For principal P over n months, payment is:
payment = P * i / (1 - (1 + i)^(-n))
For spread-over-base products (e.g., Repo + margin), compute the effective annual rate as r_effective = r_repo + margin using the rate value you just retrieved. Apply the same payment formula with r_effective. Cache the rate and corresponding effective date to ensure auditability of any quotes you generate.
Compare Interest Costs Between Two Rates with /convert
If you want a quick comparison of simple interest cost at the latest values for two symbols, use /api/v1/convert. This endpoint computes total interest over a specified number of months at the latest rate for each symbol, then returns the difference. It’s useful for quick what-if comparisons or UI helpers.
cURL
Sample JSON
Important:
- The endpoint applies a simple loan interest model at the latest rates for a fast comparison; for amortized loans, apply your own EMI formula using the latest rate from
/latest. rate_spreadis in percentage points;interest_savedis currency units for the givenamount.
Python
import requests
params = {
"from": "RBI_REPO_RATE",
"to": "ECB_MRO",
"amount": 100000,
"term_months": 12,
"api_key": "YOUR_API_KEY"
}
r = requests.get("https://interestratesapi.com/api/v1/convert", params=params, timeout=10)
cmp = r.json()["difference"]
JavaScript
const url = "https://interestratesapi.com/api/v1/convert?from=RBI_REPO_RATE&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
const js = await (await fetch(url)).json();
const { rate_spread, interest_saved } = js.difference;
PHP
<?php
$url = "https://interestratesapi.com/api/v1/convert?from=RBI_REPO_RATE&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
$data = json_decode(file_get_contents($url), true);
$diff = $data["difference"];
Operational Notes: Frequency, Business Days, Dates, Errors, and Caching
Frequency and dates:
- RBI_REPO_RATE is monthly in publication cadence. The API renders it on a daily index for alignment with other series; values typically remain constant between policy decisions.
- Effective dates: use the
datesmap in/latestand the date keys in/timeseriesfor alignment and backfills. For/historicalon a monthly symbol, the service returns the last day with data within that month. - Business days: Daily-indexed endpoints skip weekends/holidays for rate updates, but the index itself is day-based and will include only the business days with data points.
Caching and retries:
- Leverage application-level caching for
/latestand/symbols. For RBI_REPO_RATE specifically, caching for several hours is generally safe unless a policy decision is imminent. - Respect 429 responses and the
X-RateLimit-*andRetry-Afterheaders.
Error handling:
- 401: Missing or invalid
api_key. - 403: Account without an active plan.
- 404: Symbol not found or no data in the requested date range; may include
detailswith available ranges. - 422: Validation error (date format, invalid symbol).
- 429: Request quota exhausted—back off until
X-RateLimit-Reset.
Build with confidence from the docs and production endpoints at interestratesapi.com. When you’re ready to integrate, use the Register link to obtain an API key and start calling endpoints in minutes. See the MCP for endpoint semantics and shape.
End-to-End Example: From Rate to Loan Quote
This brief workflow shows how you can go from the latest RBI_REPO_RATE to a rate-based monthly payment calculation:
- Fetch
/latest?symbols=RBI_REPO_RATEand readrates.RBI_REPO_RATEanddates.RBI_REPO_RATE. - Add your product margin to compute an effective annual rate, e.g.,
r_effective = r_repo + margin. - Convert to a monthly decimal rate:
i = r_effective / 100 / 12. - Apply EMI formula:
payment = P * i / (1 - (1 + i)^(-n))with your loan principalPand termnmonths. - Store the rate, effective date, and computed payment for audit. If a new policy decision updates the rate, invalidate your cache and recompute quotes.
For spread monitoring, schedule a daily job that pulls /fluctuation over the trailing month and triggers alerts when change_pct exceeds your threshold.
Security and Production Tips
- Never hardcode API keys in client-side code. Proxy calls through your server or leverage environment variables in backend services.
- Use GET exclusively; the API does not accept POST for data retrieval.
- Log
date,rates, anddatesfields for forensic traceability of calculations. - If you combine RBI_REPO_RATE with other series (e.g., SONIA, SOFR, or treasuries), align on a common daily calendar by outer-joining on dates, then forward-fill where appropriate.
Common Use Cases for RBI_REPO_RATE in Fintech Apps
- Mortgage and lending platforms: set base rates for INR loan products; update repricing schedules on policy changes.
- Treasury dashboards: visualize policy path with
/timeseriesand/ohlc; annotate major decisions by comparing month-to-monthopenandclose. - Macro research: extract multi-year time series for regime analysis, compute rolling changes with
/fluctuation, and export to notebooks. - Risk models: set shock scenarios relative to current RBI_REPO_RATE and simulate impacts across yield curves and credit models.
To begin, grab an API key at Get started with Interest Rates API, then consult the Interest Rates API MCP for endpoints and field definitions.
FAQ
Q: What unit is RBI_REPO_RATE returned in?
A: Percentage per annum. For example, 5.25 means 5.25% annualized. Convert to a monthly decimal by dividing by 100 and then by 12.
Q: How should I interpret the effective date?
A: Use dates.RBI_REPO_RATE from /latest as the canonical effective date. When backtesting, align your trade or quote dates to this effective date to avoid lookahead bias.
Q: How often does RBI_REPO_RATE update?
A: The symbol is monthly in publication cadence, reflecting RBI policy decisions. The API provides a daily index for alignment, but values typically change on policy announcement dates.
Q: How do I compute a spread to another benchmark?
A: Retrieve both latest values and subtract: spread = rate_A - rate_B. Use the same effective date window for consistency. For a quick comparison, the /convert endpoint returns rate_spread and simple interest differences for a notional amount and term.
Q: What should I cache, and for how long?
A: Cache /symbols for days. For /latest on RBI_REPO_RATE, caching for several hours is typical outside policy decision windows. Always invalidate cache if the dates map changes.
Ready to ship RBI_REPO_RATE into your app? Visit interestratesapi.com, read the MCP, and Register for an API key to begin integration.
