Tigzig APIs - Reading the Logs, Shipping the Fixes. Status Page Live, R2 Downloads, Self-Correcting 4xxs.
Published: July 8, 2026
Good to see real volume on the Tigzig APIs now. .. and climbing. I read the logs every day. The 200s tell me what is working, the 4xxs and 5xxs tell me what to fix next.
Gone live in last 48 hours, based on exactly that feedback:
- You / your AI guessed
/seriesinstead of/nav, or sentstart=instead ofsince=? Those now quietly work. One canonical spec in the docs, common guesses caught anyway. - Every 4xx now returns a help block linking the docs and the machine catalog, so your agent can self-correct without you stepping in.
- Full database downloads, 100 to 500+ MB files, now served from Cloudflare R2. Noticeably faster.
- Status page live, probed every minute, downtime rings my phone: status.tigzig.com.
Underway: fallback to a secondary server if the primary goes down.
Still getting errors? Most common reasons in the section below.
Docs: tigzig.com -> APIs -> MF NAV
Full catalog: tigzig.com/apis
Or skip the reading. Your AI needs no hand-holding here: Copy page on the docs, paste, done. Or simply ask it "read the catalog at api.tigzig.com and run me a SIP analysis".
The most common errors in my logs, and the fixes
- 404 not found: the scheme code does not exist. The usual culprit is guessing or enumerating codes (e.g. 100001, 100002, 100003 .. none of them exist). Look the code up once with
/search?q=fund name, or just pass the ISIN from your broker statement. Both work. - Heavy parallel bursts used to throw the odd 503. Those now come back as proper 429s too (as of 30 mins back).
- 429 rate limited: you are past 300 requests a minute per public IP. Every response carries
X-RateLimitheaders telling you exactly how much budget you have left, so your script or agent can pace itself. Blind parallel loops are what trip this. - 400 validation: usually a malformed date or an oversized bulk call. Dates are
YYYY-MM-DD, bulk calls cap at 50 schemes per request, and pass eitherscheme=for one orschemes=for many, not both. - Every failure comes back as JSON with an error code, a message, and a
docs_urlpointing straight at the fix.
Polling regularly? Send If-Modified-Since and you get a 304 back on days AMFI has not published, weekends and holidays, so you skip re-downloading history you already have.
Working on something similar? How I work covers the rates, the availability and what I take on.