AltF Developers
Rate limits, 429s and caching
Two endpoints are rate limited per client: /api/signals at 60 requests a minute and /api/health at 30. Going over returns HTTP 429 with Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. Every endpoint sends a Cache-Control header; caching for that long keeps you far below the limits. The backoff generator above writes retry code that honours Retry-After.
- No API key
- Free, no sign-up
- Real responses, no mock data
- Code in 5 languages
What a 429 looks like
Status 429, body {"error": "Too many requests. Please try again shortly."}, and headers Retry-After (seconds), X-RateLimit-Limit, X-RateLimit-Remaining: 0 and X-RateLimit-Reset (Unix seconds). It is sent with Cache-Control: no-store.
A good retry policy
- On 429, sleep for Retry-After seconds, then retry once.
- On 5xx or a network error, retry with exponential backoff (1s, 2s, 4s) plus jitter, at most 3-4 times.
- Never retry 400 or 404: the request itself is wrong.
- Cache successful responses for their max-age or s-maxage.
Limits, CORS and caching
| Endpoint | Returns | Browser CORS | Rate limit | Cache |
|---|---|---|---|---|
| GET /api/signals | Signals catalogue | Same origin only | 60 requests per minute per client | CDN 1 hour, then stale for up to 24 hours |
| GET /api/open-data/exam-photo-specs | Exam photo and signature specs | Any origin (Access-Control-Allow-Origin: *) | No per-client limit; served from cache | Browser and CDN 24 hours, stale for up to 7 days |
| GET /api/open-data/transform-converters | Format converter index | Any origin (Access-Control-Allow-Origin: *) | No per-client limit; served from cache | Browser and CDN 24 hours, stale for up to 7 days |
| GET /api/oembed | oEmbed provider | Any origin (Access-Control-Allow-Origin: *) | No per-client limit; cached at the CDN | CDN 1 hour, then stale for up to 24 hours; cache_age 86400 |
| GET /api/health | Site health | Same origin only | 30 requests per minute per client | CDN 60 seconds, then stale for up to 2 minutes |
Read from each route's source code on 2026-11-01.
Rate limits, 429s and caching: questions and answers
Are limits per IP or per key?
Per client address, as seen by AltFTool's edge. There are no keys.
Can I get a higher limit?
There is no paid tier. Cache responses and you will rarely need more than one request per hour per query.
More developer reference
- Free JSON API quickstart (no API key)Call AltFTool's free public JSON API in a minute: no key, no sign-up. Working cURL, JavaScript, Node.js, Python and PHP examples with caching and 429 handling.
- Signals API referenceGET /api/signals returns search-demand signals for tool ideas: query, category, search volume estimate, opportunity score and momentum. Parameters, fields and examples.
- Open data API referenceTwo free open datasets with CORS enabled: Indian exam photo and signature specs, and the AltFTool file converter index. Fields, attribution rules and code.
- oEmbed provider referenceAltFTool's oEmbed endpoint turns a pasted tool URL into a live widget in WordPress, Ghost and any oEmbed consumer. Parameters, response, errors and a live tester.
- Embed free tool widgets on your siteEmbed free AltFTool calculators, converters and generators on your site with one iframe, a responsive wrapper or a WordPress block. Builder, preview and rules.
- Feeds, sitemaps and llms.txtEvery machine-readable AltFTool file: RSS feed, XML sitemap, Google News sitemap, llms.txt, llms-full.txt, ai.txt and robots.txt, with refresh times and uses.
Free developer tools
Requests and APIs
JSON and data
Built something with it? Get it seen
Credit AltFTool with a normal link to the page you used, then list your own project where developers look. Our backlinks directory sorts free places to submit a site by type and authority.