{"openapi":"3.1.0","info":{"title":"Genka","version":"2026-04-23-beluga","description":"Genka — origin price for Indian markets. Primary-source REST + MCP API for Nifty 500 fundamentals and ratios.\n\n**Usage guide**: https://github.com/ScaledFocus/indiamarketsapi/blob/main/docs/USAGE.md\n\n**Versioning** (Stripe-style): dated + alphabetical-animal codename. Current: `2026-04-23-beluga`. `/latest/*` 307-redirects to the current version. Any additive or breaking schema change bumps the date/animal.\n\n**Provenance** — every numeric response carries `meta.sources[]` citations. BS-derived ratios carry per-row `bs_source` ∈ {xbrl, screener.in, both_agree, both_disagree, null}. Sparse periods return `value: null` plus `coverage: {total, present, missing}` so you see gaps explicitly.\n\n**Errors** — RFC 7807 `application/problem+json` with structured `code`, `detail`, `instance`, and `request_id`.\n\n**Rate limit** — 60 req/min per API key. Headers: `X-RateLimit-Limit/Remaining/Reset`, `Retry-After` on 429.\n\n**Pagination** — cursor-based on list routes. Opaque `next_cursor` in `meta.pagination`.\n\n**Field selection** — `?fields=symbol,pe` narrows payload on detail routes.\n**Expand** — `?expand=sector` hydrates relations inline on `/companies/{symbol}`."},"servers":[{"url":"https://genka.dev"}],"components":{"schemas":{},"parameters":{}},"paths":{"/2026-04-23-beluga/health":{"get":{"tags":["meta"],"summary":"Liveness + dataset heartbeat. No auth, no rate limit.","operationId":"get_GetHealth","responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"dataset":{},"sources":{"type":"array","items":{}}},"required":["ok","sources"]}}}}}}},"/2026-04-23-beluga/meta":{"get":{"tags":["meta"],"summary":"Dataset metadata: date range, sector counts, source citations.","operationId":"get_GetMeta","responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["meta"]}}}}}}},"/2026-04-23-beluga/companies":{"get":{"tags":["companies"],"summary":"List Nifty 500 constituents with cursor pagination.","operationId":"get_GetCompanies","parameters":[{"schema":{"type":"string","description":"opaque pagination cursor"},"required":false,"description":"opaque pagination cursor","name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"comma-separated fields to include"},"required":false,"description":"comma-separated fields to include","name":"fields","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"company":{"type":"string"},"industry":{"type":["string","null"]},"isin":{"type":["string","null"]}},"required":["symbol","company"]}},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}":{"get":{"tags":["companies"],"summary":"Company profile. `?expand=sector` hydrates the sector block.","operationId":"get_GetCompany","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"string","description":"comma-separated fields to include"},"required":false,"description":"comma-separated fields to include","name":"fields","in":"query"},{"schema":{"type":"string","description":"comma-separated relations to hydrate"},"required":false,"description":"comma-separated relations to hydrate","name":"expand","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"company":{"type":"string"},"industry":{"type":["string","null"]},"isin":{"type":["string","null"]},"brands":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"category":{"type":"string"}},"required":["brand"]}},"sector":{"type":"object","properties":{"sector":{"type":"string"},"slug":{"type":"string"}},"required":["sector","slug"],"description":"only populated when ?expand=sector"}},"required":["symbol","company"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}},"404":{"description":"not found","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"}},"required":["type","title","status"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}/coverage":{"get":{"tags":["companies"],"summary":"Which metrics/periods are populated for this symbol.","operationId":"get_GetCoverage","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"coverage":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string"},"n":{"type":"integer"},"first":{"type":"string"},"last":{"type":"string"},"sources":{"type":"array","items":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]}}},"required":["metric","n","first","last","sources"]}}},"required":["symbol","coverage"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}/filings":{"get":{"tags":["companies"],"summary":"XBRL filing download URLs for this symbol.","operationId":"get_GetFilings","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"],"default":"Consolidated"},"required":false,"name":"consolidated","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"filings":{"type":"array","items":{"type":"object","properties":{"period_end":{"type":"string"},"consolidated":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"]},"source":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"xbrl_url":{"type":"string"},"filing_date":{"type":["string","null"]}},"required":["period_end","consolidated","source","xbrl_url","filing_date"]}}},"required":["symbol","filings"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}/income-statements":{"get":{"tags":["companies"],"summary":"income-statement time series (wide form, one row per period).","operationId":"get_2026-04-23-beluga_companies_symbol_income-statements","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"],"default":"Consolidated"},"required":false,"name":"consolidated","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"statement":{"type":"string"},"consolidated":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"]},"points":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}]}}}},"required":["symbol","statement","consolidated","points"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}/balance-sheets":{"get":{"tags":["companies"],"summary":"balance-sheet time series (wide form, one row per period).","operationId":"get_2026-04-23-beluga_companies_symbol_balance-sheets","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"],"default":"Consolidated"},"required":false,"name":"consolidated","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"statement":{"type":"string"},"consolidated":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"]},"points":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}]}}}},"required":["symbol","statement","consolidated","points"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}/cash-flow-statements":{"get":{"tags":["companies"],"summary":"cash-flow time series (wide form, one row per period).","operationId":"get_2026-04-23-beluga_companies_symbol_cash-flow-statements","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"],"default":"Consolidated"},"required":false,"name":"consolidated","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"statement":{"type":"string"},"consolidated":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"]},"points":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}]}}}},"required":["symbol","statement","consolidated","points"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/companies/{symbol}/ratios":{"get":{"tags":["ratios"],"summary":"Single-metric ratio series. Returns every period in range; missing values are null.","operationId":"get_GetRatios","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"string","enum":["pe","p_s","p_b","ev_ebitda","ev_ebitda_approx","mcap_cr","ebitda_ttm","revenue_ttm","pat_ttm"],"default":"pe"},"required":false,"name":"metric","in":"query"},{"schema":{"type":"string","default":"2014-01-01"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string","default":"2030-01-01"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"metric":{"type":"string","enum":["pe","p_s","p_b","ev_ebitda","ev_ebitda_approx","mcap_cr","ebitda_ttm","revenue_ttm","pat_ttm"]},"consolidated":{"type":"string","enum":["Consolidated","Non-Consolidated","Standalone"]},"points":{"type":"array","items":{"type":"object","properties":{"period_end":{"type":"string"},"value":{"type":["number","null"]},"bs_source":{"type":["string","null"],"enum":["xbrl","screener.in","both_agree","both_disagree",null]},"borrowings_diff_pct":{"type":["number","null"]},"equity_diff_pct":{"type":["number","null"]}},"required":["period_end","value"]}},"coverage":{"type":"object","properties":{"total":{"type":"integer"},"present":{"type":"integer"},"missing":{"type":"integer"}},"required":["total","present","missing"]}},"required":["symbol","metric","consolidated","points","coverage"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/prices":{"get":{"tags":["prices"],"summary":"Multi-symbol, multi-metric time series. Use for charts and bulk fetches.","operationId":"get_GetPrices","parameters":[{"schema":{"type":"string","description":"comma-separated symbols (max 50)"},"required":true,"description":"comma-separated symbols (max 50)","name":"symbols","in":"query"},{"schema":{"type":"string","default":"pe","description":"comma-separated metrics"},"required":false,"description":"comma-separated metrics","name":"metrics","in":"query"},{"schema":{"type":"string","default":"2014-01-01"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string","default":"2030-01-01"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbols":{"type":"array","items":{"type":"string"}},"metrics":{"type":"array","items":{"type":"string","enum":["close","mcap_cr","ev_cr","pe","p_s","p_b","ev_ebitda","ev_ebitda_approx","revenue_ttm","pat_ttm","ebitda_ttm"]}},"rows":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"period_end":{"type":"string"}},"required":["symbol","period_end"],"additionalProperties":{"type":["number","null"]}}}},"required":["symbols","metrics","rows"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}},"400":{"description":"bad request","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"}},"required":["type","title","status"]}}}}}}},"/2026-04-23-beluga/sectors":{"get":{"tags":["sectors"],"summary":"Sector master list.","operationId":"get_GetSectors","responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"sectors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"n":{"type":"integer"}},"required":["name","slug","n"]}}},"required":["sectors"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/sectors/{slug}":{"get":{"tags":["sectors"],"summary":"Sector profile. Use `?include=members,aggregate` to hydrate extras.","operationId":"get_GetSector","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":60,"pattern":"^[a-z0-9-]+$"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string","description":"comma-separated: members, aggregate"},"required":false,"description":"comma-separated: members, aggregate","name":"include","in":"query"},{"schema":{"type":"string","enum":["pe","p_s","p_b","ev_ebitda","ev_ebitda_approx","mcap_cr","ebitda_ttm","revenue_ttm","pat_ttm"],"default":"ev_ebitda"},"required":false,"name":"metric","in":"query"},{"schema":{"type":"string","default":"2014-01-01"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string","default":"2030-01-01"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["meta"]}}}}}}},"/2026-04-23-beluga/search":{"get":{"tags":["search"],"summary":"Search companies / brands / sectors by query text.","operationId":"get_Search","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"q","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"query":{"type":"string"},"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"company":{"type":["string","null"]},"industry":{"type":["string","null"]},"brands_matched":{"type":"array","items":{"type":"string"}},"score":{"type":"number"}},"required":["symbol","company","industry","brands_matched","score"]}}},"required":["query","count","results"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/screener":{"post":{"tags":["screener"],"summary":"Screen market rows at a period_end by filter thresholds.","operationId":"post_Screen","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"filter":{"type":"object","additionalProperties":{"type":"object","properties":{"op":{"type":"string","enum":["gt","gte","lt","lte","eq","between"]},"value":{"anyOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]}},"required":["op","value"]}},"sector":{"type":"string"},"period_end":{"type":"string"},"sort":{"type":"object","properties":{"metric":{"type":"string"},"direction":{"type":"string","enum":["asc","desc"],"default":"desc"}},"required":["metric"]},"limit":{"type":"integer","minimum":1,"maximum":500,"default":50}}}}}},"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"period_end":{"type":"string"},"filter":{"type":"object","additionalProperties":{}},"results":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"company":{"type":"string"},"industry":{"type":["string","null"]},"period_end":{"type":"string"},"pe":{"type":["number","null"]},"p_s":{"type":["number","null"]},"p_b":{"type":["number","null"]},"ev_ebitda":{"type":["number","null"]},"mcap_cr":{"type":["number","null"]},"bs_source":{"type":["string","null"],"enum":["xbrl","screener.in","both_agree","both_disagree",null]}},"required":["symbol","company","industry","period_end","pe","p_s","p_b","ev_ebitda","mcap_cr"]}}},"required":["period_end","results"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}},"400":{"description":"bad request","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"}},"required":["type","title","status"]}}}}}}},"/2026-04-23-beluga/concalls":{"get":{"tags":["concalls"],"summary":"List concall transcript metadata, paginated.","description":"Returns metadata (symbol, news_dt, kind, chars) across the corpus. Filter by `symbol`, `from`, `to`. Full text available via `/v1/concalls/search` or `/v1/concalls/answer`.","operationId":"get_GetConcalls","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":false,"name":"symbol","in":"query"},{"schema":{"type":"string","description":"YYYY-MM-DD inclusive"},"required":false,"description":"YYYY-MM-DD inclusive","name":"from","in":"query"},{"schema":{"type":"string","description":"YYYY-MM-DD inclusive"},"required":false,"description":"YYYY-MM-DD inclusive","name":"to","in":"query"},{"schema":{"type":"string","enum":["TXN","NSE"]},"required":false,"name":"kind","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"opaque pagination cursor"},"required":false,"description":"opaque pagination cursor","name":"cursor","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"symbol":{"type":"string"},"news_dt":{"type":"string"},"kind":{"type":"string","enum":["TXN","NSE"]},"chars":{"type":"integer"}},"required":["id","symbol","news_dt","kind","chars"]}}},"required":["results"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/concalls/search":{"get":{"tags":["concalls"],"summary":"Full-text search across concall transcripts (SQLite FTS5).","description":"Returns top-K passages matching the query. Use `symbol=X` to restrict to one issuer. Passage snippets are 240-char windows centred on the match; rank is BM25 (lower is better — we invert to score, higher = more relevant).","operationId":"get_ConcallSearch","parameters":[{"schema":{"type":"string","minLength":2,"maxLength":200},"required":true,"name":"q","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":false,"name":"symbol","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"query":{"type":"string"},"count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"news_dt":{"type":"string"},"kind":{"type":"string","enum":["TXN","NSE"]},"score":{"type":["number","null"]},"snippet":{"type":"string"}},"required":["symbol","news_dt","kind","score","snippet"]}}},"required":["query","count","results"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}},"400":{"description":"bad query","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"}},"required":["type","title","status"]}}}}}}},"/2026-04-23-beluga/concalls/{symbol}":{"get":{"tags":["concalls"],"summary":"List all concall transcripts for one symbol (newest first).","operationId":"get_GetConcallsForSymbol","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"required":true,"name":"symbol","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"symbol":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"symbol":{"type":"string"},"news_dt":{"type":"string"},"kind":{"type":"string","enum":["TXN","NSE"]},"chars":{"type":"integer"}},"required":["id","symbol","news_dt","kind","chars"]}}},"required":["symbol","results"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}}}}},"/2026-04-23-beluga/concalls/answer":{"post":{"tags":["concalls"],"summary":"Answer a natural-language question from concall transcripts with citations.","description":"Retrieves top-K passages via FTS5 (optionally restricted to `symbols[]`), sends them to Claude Haiku, returns a cited answer. **This endpoint is priced at 20× the standard unit cost** — see `/v1/account` for your balance.","operationId":"post_ConcallAnswer","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"question":{"type":"string","minLength":4,"maxLength":500},"symbols":{"type":"array","items":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Za-z0-9&\\-]+$"},"maxItems":10,"description":"restrict retrieval to these symbols"},"limit":{"type":"integer","minimum":1,"maximum":20,"default":8,"description":"top-k passages fed to LLM"},"model":{"type":"string","minLength":3,"maxLength":80,"pattern":"^[a-zA-Z0-9._\\-\\/:]+$","default":"openai/gpt-4o-mini","description":"OpenRouter model slug; caller-selectable at request time. Default is gpt-4o-mini for speed + transparent token cost. Examples: anthropic/claude-haiku-4.5, anthropic/claude-sonnet-4.5, google/gemini-2.5-flash."},"max_tokens":{"type":"integer","minimum":64,"maximum":4096,"default":900,"description":"LLM output cap"}},"required":["question"]}}}},"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"question":{"type":"string"},"answer":{"type":"string"},"citations":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string"},"news_dt":{"type":"string"},"kind":{"type":"string","enum":["TXN","NSE"]},"snippet":{"type":"string"}},"required":["symbol","news_dt","kind","snippet"]}},"model":{"type":"string"},"tokens_in":{"type":"integer"},"tokens_out":{"type":"integer"},"cost":{"type":"object","properties":{"upstream_usd":{"type":"number","description":"dollar cost OpenRouter charged us (usage.cost, inline)"},"charged_cents":{"type":"number","description":"cents debited from your account (upstream × markup)"},"markup":{"type":"number"}},"required":["upstream_usd","charged_cents","markup"]}},"required":["question","answer","citations","model"]},"meta":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["nse_xbrl","sebi_iff","screener.in","nse_bhavcopy","nse_shp","nse_universe","derived"]},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"citation":{"type":"string"},"license":{"type":"string"}},"required":["id","name","url","citation"]}},"pagination":{"type":"object","properties":{"count":{"type":"integer"},"total":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["count","total","has_more","next_cursor"]}},"required":["as_of"]}},"required":["data","meta"]}}}},"400":{"description":"bad request","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"}},"required":["type","title","status"]}}}},"503":{"description":"LLM backend unavailable (e.g. ANTHROPIC_API_KEY not configured)","content":{"application/problem+json":{"schema":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"}},"required":["type","title","status"]}}}}}}}},"webhooks":{}}