Get ETF / index-fund holdings
Returns an ETF or index fund’s current holdings and each position’s weight, resolved via a live web search plus a scrape of the fund’s public holdings fact sheet (Context.dev /web/search and /web/scrape/markdown) - not an SEC filing feed - see go/service/indexfund.go. Only ticker mode is supported: Financial Datasets’ reverse “?holding=AAPL” lookup (funds holding a given security) is not implemented by get_index_fund, so ticker is required regardless of what other query parameters are set (missing ticker answers a real HTTP 400). Pagination is offset/limit (not the cursor scheme this API’s other list routes use), applied to the holdings already resolved for this call. If the routable holdings document could not be parsed at all, this server answers HTTP 200 with a bad_request ErrorResponse body (“holdings document not routable for TICKER”) rather than fabricating an empty holdings list.
Authorizations
The caller's own Monid API key (get one at https://monid.ai?fpr=dhruv-15136b). Passed straight through to Monid on every call, so usage bills the caller's own wallet — this is never a shared server-side credential, and the server never logs or stores it. Missing, empty, or malformed values answer 401 unauthorized before any paid call is attempted.
Query Parameters
The fund's ticker symbol (e.g., SPY, QQQ, VTI). Uppercase-normalized, 1-20 letters/digits/dots/hyphens.
Return the fund composition in effect on or before this date (YYYY-MM-DD). Without it, this server returns whatever the routable fact sheet currently reports. If the routable fact sheet is dated after as_of, this server answers HTTP 200 with a not_found ErrorResponse body instead of guessing an earlier composition.
Restrict holdings to equity or bond instruments. Omit to return every holding the fact sheet lists.
equity, bond Number of records to retrieve (default: 50, max: 1000). Maximum number of holdings in this page.
1 <= x <= 1000Number of holdings to skip before this page starts, for paging through a large holdings list (default 0).
x >= 0Response
Illustrative shape (no captured live sample committed for this route); values are structural placeholders, not a claim about real reported figures.
Unwrapped body for /index-funds (ticker mode only - see this route's description). May instead be a two-key ErrorResponse ({"error": "bad_request" or "not_found", "message": ...}) when no holdings document is routable, or when as_of predates the routable fact sheet.
The fund ticker, echoed back uppercase-normalized.
Fund header for /index-funds: identity, as-of date, and coverage counts for the full fund (not just the returned page). Every field is present only when this server could source it - see go/service/indexfund.go's fund object construction.
Sorted by weight descending (holdings with no weight sort last, by ticker-or-name).