Mutual Funds
All mutual fund endpoints are under /api/mf/.
Metadata & Listings
Get All AMCs
Returns all Asset Management Companies.
- Method:
GET - URL:
/api/mf/get_all_amcs - Auth: Required
curl -s https://api.indvested.com/api/mf/get_all_amcs \
-H "x-api-token: YOUR_TOKEN"
[
{ "id": 3, "name": "Axis Mutual Fund" },
{ "id": 5, "name": "HDFC Mutual Fund" }
]
Get All Asset Classes
Returns all asset classes (Equity, Debt, Hybrid, etc.).
- Method:
GET - URL:
/api/mf/get_all_asset_classes - Auth: Required
curl -s https://api.indvested.com/api/mf/get_all_asset_classes \
-H "x-api-token: YOUR_TOKEN"
[
{ "id": 1, "name": "Equity" },
{ "id": 2, "name": "Debt" }
]
Get All Sub-Categories
Returns all asset class sub-categories with their parent class.
- Method:
GET - URL:
/api/mf/get_all_asset_class_sub_category - Auth: Required
curl -s https://api.indvested.com/api/mf/get_all_asset_class_sub_category \
-H "x-api-token: YOUR_TOKEN"
[
{
"id": 1,
"name": "Large Cap",
"assetClassID": 1,
"assetClassName": "Equity"
},
{
"id": 2,
"name": "Mid Cap",
"assetClassID": 1,
"assetClassName": "Equity"
}
]
Get Asset Class & Category Details
Returns asset classes with their nested sub-categories as a hierarchical tree.
- Method:
GET - URL:
/api/mf/get_asset_class_and_category_details - Auth: Required
curl -s https://api.indvested.com/api/mf/get_asset_class_and_category_details \
-H "x-api-token: YOUR_TOKEN"
[
{
"id": 1,
"category": "Equity",
"subCategories": [
{ "id": 1, "subCategory": "Large Cap" },
{ "id": 2, "subCategory": "Mid Cap" }
]
}
]
Get All Mutual Funds
Returns a lite listing of all mutual funds. Pre-computed and cached.
- Method:
GET - URL:
/api/mf/get_all_mutual_funds - Auth: Required
curl -s https://api.indvested.com/api/mf/get_all_mutual_funds \
-H "x-api-token: YOUR_TOKEN"
Returns an array of fund objects with basic fields: id, name, ISINCode, NAV, NAVDate, assetClass, assetClassSubCategory, amc, fundType, fundOption.
Fund Details & NAV
Get Mutual Fund Details
Returns comprehensive pre-computed metrics for a single fund.
- Method:
GET - URL:
/api/mf/get_mutual_fund_details/<fund_id> - Auth: Required
curl -s https://api.indvested.com/api/mf/get_mutual_fund_details/42 \
-H "x-api-token: YOUR_TOKEN"
Response fields:
| Field | Description |
|---|---|
fundID, fundName, ISINCode | Basic fund identification |
amc, assetClass, assetClassSubCategory | Classification |
NAV, NAVDate, TER | Latest NAV, date, and expense ratio |
sipCagrMetricsFromDailyNAVData | SIP CAGR by duration (1Y, 3Y, 5Y, 7Y, 10Y, 12Y, 15Y) |
xirrMetricsFromDailyNAVData | True XIRR by duration |
rollingReturnMetricsFromDailyNAVData | Rolling return summary per duration with meanReturn, sharpeRatio, sortinoRatio, bestReturn, worstReturn, percentOfWindowsWithPositiveReturn |
drawdownMetrics | maxDrawdown, maxDrawdownDurationDays, maxDrawdownRecoveryDays, averageDrawdown, numberOfDrawdowns, calmarRatioByDuration |
benchmarkComparisonMetrics | beta, alpha, upsideCaptureRatio, downsideCaptureRatio vs primary NSE benchmark (equity funds only, null for Debt). Also includes benchmarkSipReturnsByDuration — a flat {months: %} map of the benchmark’s own SIP XIRR by duration, decoupled from fund age so every duration the benchmark supports surfaces regardless of the fund’s history. |
pointToPointReturnFromDailyNAVData | Lump-sum CAGR: NAV at start vs end, annualized |
pointToPointReturnFromMonthlyNAVData | Lump-sum CAGR using 4 min/max combinations plus blended average |
sipCagrMetricsOverall, xirrMetricsOverall, rollingReturnMetricsOverall, pointToPointReturnMetricsOverall | Merged daily+monthly values per duration with source field ("daily", "monthly", or "both") |
categoryAverageRollingReturns | Peer category average rolling returns for comparison |
categoryAverageSipReturns | Peer category average SIP XIRR (flat {months: %} map, decoupled from fund age) |
calendarYearReturnsFromDailyNAVData | Per-calendar-year return computed from daily NAV series. Shape: {"summary": {<year>: {"year", "fromDate", "toDate", "initialNAV", "finalNAV", "return", "isPartialYear"}}, "updatedAt"}. Within-year method: (last NAV of year ÷ first NAV of year − 1) × 100. Years with isPartialYear: true are the leading-inception year, the trailing dead-fund stub, or the current (in-progress) year. |
calendarYearReturnsFromMonthlyNAVData | Same shape as calendarYearReturnsFromDailyNAVData, but computed from the monthly NAV band. Used as the fallback band when the daily series is missing. |
benchmarkCalendarYearReturns | Per-calendar-year return map for the fund’s primary NSE benchmark (price-return basis). null for funds whose subcategory has no mapped benchmark (e.g., most Debt subcategories). |
benchmarkCalendarYearReturnsMeta | {benchmarkIndexName, benchmarkBasis: "price-return"} for the benchmark above. null when there is no benchmark calendar map for this fund. |
categoryAverageCalendarYearReturns | Per-calendar-year mean across the peer category, computed over only window-comparable contributions (funds whose year-Y record starts in January and ends in December, except the current year where YTD is allowed). Shape: {year(int): mean_return(%, 2dp)}. null if no subcategory match. |
Duration keys are in months: "12" = 1Y, "36" = 3Y, "60" = 5Y, "84" = 7Y, "120" = 10Y, "144" = 12Y, "180" = 15Y.
Get Mutual Fund NAV
Returns the latest NAV for a specific fund.
- Method:
GET - URL:
/api/mf/get_mutual_fund_nav/<fund_id> - Auth: Required
curl -s https://api.indvested.com/api/mf/get_mutual_fund_nav/42 \
-H "x-api-token: YOUR_TOKEN"
{
"fundID": 42,
"fundName": "Axis Bluechip Fund - Direct Plan - Growth",
"ISINCode": "INF846K01EW2",
"NAV": "58.12",
"NAVDate": "2026-02-06"
}
Get All Mutual Funds NAV
Returns all mutual funds with their latest NAV and NAV date.
- Method:
GET - URL:
/api/mf/get_all_mutual_funds_nav - Auth: Required
curl -s https://api.indvested.com/api/mf/get_all_mutual_funds_nav \
-H "x-api-token: YOUR_TOKEN"
[
{
"fundId": 1,
"fundName": "HDFC Flexi Cap Fund - Direct Plan - Growth",
"isin": "INF179K01YS2",
"amcName": "HDFC Asset Management Company Limited",
"fundOption": "Growth",
"fundType": "Direct",
"latestNAV": 25.43,
"latestNAVDate": "2026-03-20"
}
]
Get Mutual Fund NAV by ISIN
Returns the latest NAV for a fund looked up by ISIN code.
- Method:
GET - URL:
/api/mf/get_mutual_fund_nav_by_isin/<isin_code> - Auth: Required
URL parameters:
| Parameter | Type | Description |
|---|---|---|
isin_code | string | 12-character ISIN code starting with “IN” |
curl -s https://api.indvested.com/api/mf/get_mutual_fund_nav_by_isin/INF846K01EW2 \
-H "x-api-token: YOUR_TOKEN"
{
"fundId": 42,
"fundName": "Axis Bluechip Fund - Direct Plan - Growth",
"isin": "INF846K01EW2",
"fundOption": "Direct",
"fundType": "Growth",
"latestNAV": 58.12,
"latestNAVDate": "2026-02-06"
}
Get Top Funds
Returns top-performing funds grouped by asset class and sub-category. See Methodology for how top performers are selected.
- Method:
GET - URL:
/api/mf/get_top_funds_by_asset_class_and_category - Auth: Required
curl -s https://api.indvested.com/api/mf/get_top_funds_by_asset_class_and_category \
-H "x-api-token: YOUR_TOKEN"
Get Top Fund History
Returns a fund’s consistency score (how often it appears in the top-funds snapshot) over the last 12m and 24m windows, plus a 30-day timeline of the rolling-return snapshot used to compute it. Lets you check whether a top-funds designation is durable or a one-off.
- Method:
GET - URL:
/api/mf/top-funds/history/<isin> - Auth: Not required
URL parameters:
| Parameter | Type | Description |
|---|---|---|
isin | string | 12-character ISIN code of the fund (e.g., INF846K01EW2) |
curl -s https://api.indvested.com/api/mf/top-funds/history/INF846K01EW2
{
"isinCode": "INF846K01EW2",
"fundName": "Axis Bluechip Fund - Direct Plan - Growth",
"assetClassSubCategory": "Large Cap Fund",
"consistencyScore12m": 92.3,
"consistencyScore24m": 78.5,
"totalSnapshots12m": 130,
"qualifiedSnapshots12m": 120,
"totalSnapshots24m": 250,
"qualifiedSnapshots24m": 196,
"recentSnapshots": [
{
"date": "2026-06-14",
"qualified": true,
"meanRollingReturnByDuration": { "12": 14.2, "36": 12.8, "60": 11.5 }
},
{
"date": "2026-06-13",
"qualified": false
}
]
}
consistencyScore12m/consistencyScore24m— percentage of the 12/24-month snapshot windows in which the fund qualified as a top performer (0-100).nullif no snapshots exist in the window.totalSnapshots{12m,24m}— number of distinct pipeline-run snapshot dates in the window (denominator).qualifiedSnapshots{12m,24m}— number of those snapshots where this fund was in the top list (numerator).recentSnapshots— last 30 days of pipeline runs, newest first. Each entry is either a full snapshot (qualified: truewith the fund’smeanRollingReturnByDurationat that date) or a placeholder (qualified: falsefor dates when the pipeline ran but the fund did not qualify).
A 404 is returned when the ISIN is not in the system.
Analytics & Comparison
Compare Mutual Funds
Side-by-side comparison of 2-10 funds by ISIN code. Returns the full metric set for each fund.
- Method:
POST - URL:
/api/mf/compare_mutual_funds - Auth: Not required
Request body:
| Field | Type | Description |
|---|---|---|
schemeCodes | string[] | ISIN codes to compare (2-10) |
curl -s -X POST https://api.indvested.com/api/mf/compare_mutual_funds \
-H "Content-Type: application/json" \
-d '{"schemeCodes": ["INF846K01EW2", "INF090I01JN4", "INF205K01UV3"]}'
{
"funds": [
{
"id": 42,
"amcName": "Axis AMC",
"fundName": "Axis Bluechip Fund - Direct Growth",
"ISINCode": "INF846K01EW2",
"metaData": { "TER": 0.42, "NAV": 58.23, "NAVDate": "2026-02-24" },
"rollingReturnSummary": {
"12": {
"meanReturn": 13.5,
"sharpeRatio": 0.91,
"sortinoRatio": 1.24,
"percentOfWindowsWithPositiveReturn": 88.5
}
},
"drawdownMetrics": {
"maxDrawdown": -0.31,
"maxDrawdownDurationDays": 412,
"calmarRatioByDuration": { "12": 22.4, "36": 9.1 }
},
"benchmarkComparisonMetrics": {
"benchmarkIndexName": "NIFTY 50",
"metricsByDuration": {
"36": {
"beta": 0.93,
"alpha": 1.8,
"upsideCaptureRatio": 104.2,
"downsideCaptureRatio": 83.1
}
}
}
}
],
"notFoundISINs": []
}
rollingReturnSummaryandsipCagrSummaryare keyed by duration in monthsbenchmarkComparisonMetricsisnullfor Debt fundsnotFoundISINslists any requested ISINs that were not found
Compute Portfolio Return
Compute blended portfolio returns from a weighted combination of funds, compared against NSE index benchmarks.
- Method:
POST - URL:
/api/mf/compute_portfolio_return - Auth: Not required
Request body: JSON object where keys are fund IDs and values are percentage weights. Weights must sum to 100.
curl -s -X POST https://api.indvested.com/api/mf/compute_portfolio_return \
-H "Content-Type: application/json" \
-d '{"42": 60, "85": 40}'
{
"fundDetails": [ ... ],
"blendedReturns": {
"absoluteSipCagr": { "1Y": 12.5, "3Y": 14.2, "5Y": 15.8 },
"rollingReturns": { "1Y": 11.8, "3Y": 13.5, "5Y": 14.9 }
},
"benchmarkReturns": [ ... ]
}
Screen Funds
Filter funds by computed metric thresholds. All parameters are optional and AND-combined. Reads from a pre-built screener index cache, so responses are fast.
- Method:
GET - URL:
/api/mf/screen - Auth: Not required
Query parameters:
| Parameter | Type | Description |
|---|---|---|
subcategory | string | Case-insensitive substring match on sub-category (e.g., large+cap) |
amc | string | Case-insensitive substring match on AMC name |
max_ter | float | Maximum expense ratio |
min_alpha | float | Minimum Jensen’s alpha (longest available duration) |
max_beta | float | Maximum beta vs benchmark |
min_upside_capture | float | Minimum upside capture ratio |
max_downside_capture | float | Maximum downside capture ratio |
min_history_years | int | Minimum years of rolling return data |
min_rolling_return_1y | float | Minimum mean 1-year rolling return |
min_rolling_return_3y | float | Minimum mean 3-year rolling return |
min_rolling_return_5y | float | Minimum mean 5-year rolling return |
sort_by | string | Sort key. One of: alpha, beta, ter, upside_capture, downside_capture, max_drawdown, rolling_return_1y, rolling_return_3y, rolling_return_5y. Default: alpha |
limit | int | Max results (1-100, default 50) |
curl -s "https://api.indvested.com/api/mf/screen?subcategory=large+cap&min_alpha=0&max_beta=1&max_ter=1&min_history_years=5"
{
"totalMatching": 12,
"returned": 12,
"limit": 50,
"sortBy": "alpha",
"funds": [
{
"id": 42,
"ISINCode": "INF209K01YZ5",
"fundName": "Axis Bluechip Fund - Direct Plan - Growth",
"amcName": "Axis",
"assetClassSubCategory": "Large Cap Fund",
"TER": 0.52,
"NAV": 58.12,
"alpha": 3.21,
"beta": 0.87,
"upsideCaptureRatio": 105.2,
"downsideCaptureRatio": 82.1,
"rollingReturnMeanByDuration": { "12": 15.2, "36": 12.8, "60": 11.5 },
"maxDrawdown": -0.35
}
]
}
Funds missing a filtered metric (e.g., Debt funds have no alpha/beta) are excluded when that filter is active.
Fund Overlap
Compare 2-10 equity funds by portfolio holdings overlap. Returns a pairwise overlap matrix, shared holdings, and per-fund summaries.
- Method:
POST - URL:
/api/mf/fund_overlap - Auth: Not required
Request body:
| Field | Type | Description |
|---|---|---|
fundIds | int[] | Fund IDs to compare (2-10) |
Overlap formula: overlap(A, B) = sum of min(weight_A, weight_B) for all shared stock ISINs.
curl -s -X POST https://api.indvested.com/api/mf/fund_overlap \
-H "Content-Type: application/json" \
-d '{"fundIds": [123, 456, 789]}'
{
"reportingDate": "2026-01-31",
"overlapMatrix": {
"123_456": { "overlapPercentage": 34.5, "sharedHoldingsCount": 18 },
"123_789": { "overlapPercentage": 12.1, "sharedHoldingsCount": 8 },
"456_789": { "overlapPercentage": 28.7, "sharedHoldingsCount": 15 }
},
"sharedHoldings": [
{
"stockISIN": "INE002A01018",
"stockName": "Reliance Industries",
"industry": "Petroleum Products",
"fundsHolding": [
{ "fundId": 123, "percentageOfNav": 5.2 },
{ "fundId": 456, "percentageOfNav": 3.8 }
]
}
],
"fundSummaries": {
"123": { "totalHoldings": 45, "uniqueHoldings": 18 },
"456": { "totalHoldings": 52, "uniqueHoldings": 22 }
}
}
Portfolio Overlap
Analyze a portfolio for stock-level concentration. Returns effective stock exposure weighted by your fund allocations, sector breakdown, and concentration metrics.
- Method:
POST - URL:
/api/mf/portfolio_overlap - Auth: Not required
Request body:
| Field | Type | Description |
|---|---|---|
portfolio | array | Array of {fundId, allocationPercentage} objects. Allocations must sum to 100 |
Effective weight per stock: effectiveWeight = sum(fund_allocation % x stock_weight_in_fund % / 100)
curl -s -X POST https://api.indvested.com/api/mf/portfolio_overlap \
-H "Content-Type: application/json" \
-d '{"portfolio": [{"fundId": 123, "allocationPercentage": 40}, {"fundId": 456, "allocationPercentage": 60}]}'
{
"reportingDate": "2026-01-31",
"effectiveStockExposure": [
{
"stockISIN": "INE002A01018",
"stockName": "Reliance Industries",
"effectiveWeight": 8.2,
"contributingFunds": [
{ "fundId": 123, "contribution": 5.1 },
{ "fundId": 456, "contribution": 3.1 }
]
}
],
"concentrationMetrics": {
"top10StockConcentration": 42.5,
"uniqueStocksCount": 87,
"totalStocksCount": 145,
"duplicateStocksCount": 32
},
"sectorExposure": [
{ "sector": "Banks", "effectiveWeight": 18.3 },
{ "sector": "IT - Software", "effectiveWeight": 12.1 }
]
}
Portfolio Holdings
Get Portfolio Holdings
Returns equity holdings for a mutual fund by ISIN code. Data is sourced directly from AMC monthly portfolio disclosures.
- Method:
GET - URL:
/api/mf/get_mutual_fund_portfolio_holdings/<isin_code> - Auth: Required
URL parameters:
| Parameter | Type | Description |
|---|---|---|
isin_code | string | 12-character ISIN code of the mutual fund |
curl -s https://api.indvested.com/api/mf/get_mutual_fund_portfolio_holdings/INF179K01YS2 \
-H "x-api-token: YOUR_TOKEN"
Get ISINs with Portfolio Holdings
Returns a sorted list of fund ISIN codes that have portfolio holdings data available.
- Method:
GET - URL:
/api/mf/get_isins_with_portfolio_holdings - Auth: Required
curl -s https://api.indvested.com/api/mf/get_isins_with_portfolio_holdings \
-H "x-api-token: YOUR_TOKEN"
["INF179K01YV8", "INF179KC1II1", "INF0GCD01743"]
Get Funds Holding Stock
Reverse lookup: returns all mutual funds that hold a specific stock, identified by the stock’s ISIN code.
- Method:
GET - URL:
/api/mf/get_funds_holding_stock/<stock_isin> - Auth: Required
URL parameters:
| Parameter | Type | Description |
|---|---|---|
stock_isin | string | 12-character ISIN code of the stock (e.g., INE002A01018 for Reliance) |
curl -s https://api.indvested.com/api/mf/get_funds_holding_stock/INE002A01018 \
-H "x-api-token: YOUR_TOKEN"
Utility Endpoints
Count All Funds
Returns the total number of mutual funds in the system.
- Method:
GET - URL:
/api/mf/get_count_all_funds - Auth: Required
curl -s https://api.indvested.com/api/mf/get_count_all_funds \
-H "x-api-token: YOUR_TOKEN"
{ "total_funds": 2547 }
Get Duplicate Funds
Returns funds that share the same name, useful for identifying duplicate entries.
- Method:
GET - URL:
/api/mf/get_duplicate_funds - Auth: Required
curl -s https://api.indvested.com/api/mf/get_duplicate_funds \
-H "x-api-token: YOUR_TOKEN"
{
"total_records": 2547,
"duplicate_funds": [
{
"fund_name": "Some Fund Name",
"count": 2,
"funds": [
{ "id": 101, "name": "Some Fund Name", "ISINCode": "INF...", "fundOption__name": "Direct", "fundType__name": "Growth" },
{ "id": 202, "name": "Some Fund Name", "ISINCode": "INF...", "fundOption__name": "Regular", "fundType__name": "Growth" }
]
}
]
}
Get Datasheet
Download a previously generated Excel datasheet file by its hash.
- Method:
GET - URL:
/api/mf/get_datasheet/<fileHash> - Auth: Required
URL parameters:
| Parameter | Type | Description |
|---|---|---|
fileHash | string | Blake2b hash of the file (from a prior generation step) |
curl -s https://api.indvested.com/api/mf/get_datasheet/abc123def456 \
-H "x-api-token: YOUR_TOKEN" \
-o datasheet.xlsx
Returns the file as an attachment download with appropriate content type and size headers.
Get Most Viewed Funds
Returns the top 10 most visited mutual funds by visit count.
- Method:
GET - URL:
/api/mf/get_most_viewed_funds - Auth: Required
curl -s https://api.indvested.com/api/mf/get_most_viewed_funds \
-H "x-api-token: YOUR_TOKEN"
Record Fund Visit
Records a page visit for a mutual fund. Used to track fund popularity.
- Method:
POST - URL:
/api/mf/record_visit/<fund_id> - Auth: Not required
URL parameters:
| Parameter | Type | Description |
|---|---|---|
fund_id | int | Fund ID |
curl -s -X POST https://api.indvested.com/api/mf/record_visit/42