Personality — entry 017 of 17
Zen Quotes
ZenQuotes serves a large collection of inspirational quotes as JSON, with a free rate-limited tier and a paid premium subscription unlocking unlimited requests and self-hosting. A live GET against the real gateway, zenquotes.io/api/random, returned a genuine quote with no Access-Control-Allow-Origin header on either a GET or an OPTIONS preflight, resolving cors yes -> no; no key was required, reconfirming auth None. pricingModel freemium.
ZenQuotes serves a large library of inspirational quotes as JSON, retrieved by [mode] segment in the URL — quotes, today, author, or random. Its own docs (docs.zenquotes.io) document the free, keyless tier's exact limit: "Requests are restricted by IP to 5 per 30 second period by default."
GreatAPIs Score
Auth quickstart
- No API key is needed for the free tier, but the free tier is capped and has no CORS headers — the docs state a key or a registered IP "is required for unlimited access and to enable Access-Control-Allow-Origin headers", confirmed live: a plain GET and an OPTIONS preflight against /api/random both came back with no Access-Control-Allow-Origin header at all this run.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Fetch one random quote
GEThttps://zenquotes.io/api/random
[{"q":"Don't measure yourself by what you have accomplished, but by what you should have accomplished with your ability.","a":"John Wooden","h":"<blockquote>“Don't measure yourself by what you have accomplished, but by what you should have accomplished with your ability.” — <footer>John Wooden<\/footer><\/blockquote>"}]The single quote returned is whichever one the API's random selector picked on this run's live probe, not a curated pick — captured directly and byte-for-byte, no truncation. The response is always a one-element JSON array, even for this single-quote mode.
Developer reference
https://zenquotes.io/api5 requests per IP per 30-second window on the free, keyless tier (documented at docs.zenquotes.io); a key or registered IP removes the cap and enables CORS headers
Gotchas & limits
- The free, keyless tier is rate-limited to 5 requests per IP per 30-second window by ZenQuotes' own docs — there is no live response header exposing remaining quota, so track your own call rate against that documented number.
- There is no Access-Control-Allow-Origin header on this API at all without a key or registered IP — confirmed live on both a bare GET and an OPTIONS preflight — so a same-origin server-side fetch works but a client-side browser fetch from another origin will be blocked.
- /api/quotes returns 50 quotes at once and runs 13+ KB — the docs' own recommended pattern is to fetch it once, cache it client-side, and refresh on an interval rather than calling /api/random repeatedly.
- /api/today returns one quote plus a `date` field (today's quote of the day, the same for every caller that day) — a different mode from /api/random, which is reselected on every call.
- The `i` (author image URL) and `c` (character count) fields the docs describe are not present on every quote object — this run's own /api/random capture came back with only `q`, `a`, and `h`, no `i` or `c` — don't assume every field is always populated.