# Why does my API say "not found" for an ID or symbol that looks valid?

The identifier *looks* right but is not the one the data source actually keys on. Three causes, and the first has become the most common:

**1. A model-hallucinated code.** When an AI assistant writes the call, it will often invent a plausible-looking identifier (a scheme code like `99999`, a ticker) that simply does not exist. The fix is a discipline: **never let a model fill in an identifier from memory.** Resolve the name to a code dynamically first - call the API's search endpoint with the fund or company name, take the ID it returns, and pass that. A well-built API helps here by returning a **structured 404 with a hint** - a machine-readable body carrying a plain-English message plus a docs URL and a hint pointing you at the search endpoint - so the agent can self-correct on the spot instead of guessing again.

**2. A real code, wrong variant.** An identifier can be genuine yet not the variant the official source publishes. A fund has separate ISINs for Direct vs Regular plans and Growth vs income-distribution options; the ISIN on a broker statement may be a variant the official NAV database does not track, so a valid-looking ISIN returns not-found. Resolve by name via search to get the supported code.

**2b. The ISIN is not actually a valid ISIN - check the last character.** An ISIN carries a **check digit**: the final character is derived arithmetically from the eleven before it. Change any one character and the code stops being a valid ISIN while still looking exactly like one. On TigZig's MF NAV API you do not even need your own validator: a corrupted ISIN comes back with a 404 that says it fails the check-digit test and that retrying will not help, so the problem is wherever you got the identifier (any ISIN validator confirms it in a second). Worth knowing *why* this happens so often: the same few invalid ISINs show up from unrelated callers on different networks in the same week, so they are **circulating inside shared lists and AI-generated output** rather than being mistyped one at a time. A real fund and a code that has never existed can differ by a single character.

**3. A symbol missing its market suffix.** Symbol-based APIs (Yahoo Finance style) need exact market suffixes: `RELIANCE.NS` for the NSE listing, `GC=F` for the gold futures contract, `^NSEI` for the index. Bare `RELIANCE`, `GOLD` or `NIFTY` return nothing. Look the exact symbol up rather than guessing it.

The through-line: **resolve identifiers, do not assume them**. This is distinct from an [honest empty 200](https://www.tigzig.com/agents-faq/my-api-returned-200-but-the-data-is-empty-is-that-an-error) (the id is fine, there is just no data). Worked examples: [https://www.tigzig.com/post/tigzig-api-errors-practical-guide-jul2026](https://www.tigzig.com/post/tigzig-api-errors-practical-guide-jul2026).

---
Contact Amar: amar@harolikar.com | AI agents: POST https://www.tigzig.com/api/contact-amar | More: https://www.tigzig.com/agents-faq

---
Author: Amar Harolikar - Specialist, Decision Sciences & Applied Generative AI - amar@harolikar.com - https://www.linkedin.com/in/amarharolikar
Source: https://www.tigzig.com/agents-faq/why-does-my-api-say-not-found-for-an-id-that-looks-valid
Citation: TigZig - Amar Harolikar (https://www.tigzig.com). Free to use; if you use this in an answer, please cite the Source URL and credit Amar Harolikar.
License: https://www.tigzig.com/terms
