Usually not an error - a 200 with an empty body most often means the request worked and there is simply nothing to return. This is the category worth understanding most carefully, because treating "empty" as "broken" sends you debugging a request that is fine. Four honest-empty cases:
Asking a non-corporate asset for financials. Commodities (gold), cryptocurrencies (Bitcoin) and indices (Nifty 50) do not file balance sheets or income statements. Call a fundamentals endpoint on them and you correctly get nothing - there is nothing to file.
An entity that genuinely has no such records. Querying dividends for a company that has never paid one, or analyst data for a small-cap with no coverage, returns 200 with a blank list. The call succeeded; the underlying record set is empty.
A date outside the entity's real lifespan. Ask a mutual fund that matured in 2015 for its 2025 NAV and you get empty - the fund is real, the API is up, but it was dead on those dates. Inspect the returned data array's own first and last dates to see when the entity was actually active. This is exactly why survivorship-bias-free history matters: matured and merged funds are in the data, so you must range-check.
A publishing-window gap. Standard mutual funds do not publish NAV on weekends or market holidays, and no fund has published today's value before the evening release. Empty for a Sunday, or for today at noon, is expected. (Liquid and overnight funds, which accrue daily, do publish on weekends - so the right answer depends on the fund type.)
The discipline: before treating empty as a failure, ask should this entity have data for this date at all? Contrast with a genuine not-found on a bad identifier, which is a different signal. Worked examples: https://www.tigzig.com/post/tigzig-api-errors-practical-guide-jul2026.
← All Agents FAQ