Entertainment — entry 002 of 9
chucknorris.io
chucknorris.io is a free, keyless JSON API serving hand-curated Chuck Norris jokes, either fully random or filtered across 16 categories (career, dev, movie, political, sport, and more). It also supports free-text search over the joke corpus and returns each joke with a permalink and an icon-URL field for quick embedding. There's no rate limit, no signup, and no paid tier — it's run as a hobby project on Heroku behind Cloudflare.
chucknorris.io is a single keyless JSON API: a live probe of `GET /jokes/random` returned a fresh joke with no auth header of any kind, and `GET /jokes/categories` returned a live list of exactly 16 category strings (`animal`, `career`, `celebrity`, `dev`, `explicit`, `fashion`, `food`, `history`, `money`, `movie`, `music`, `political`, `religion`, `science`, `sport`, `travel`) to filter `random` by.
GreatAPIs Score
Auth quickstart
- No API key or signup required — a live GET to `/jokes/random` with no headers at all returned HTTP 200 with a joke body.
- There is no visible rate-limit contract: repeated live probes this run never returned a `RateLimit-*`, `X-RateLimit-*`, or `Retry-After` header on any response — plan accordingly since nothing here signals how close you are to any cap the provider may still enforce server-side.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Get a random joke from one category
GEThttps://api.chucknorris.io/jokes/random?category=dev
{"categories":["dev"],"created_at":"2020-01-05 13:42:19.104863","icon_url":"https://api.chucknorris.io/img/avatar/chuck-norris.png","id":"etd9c1v9smqxo2xonfm2lq","updated_at":"2020-01-05 13:42:19.104863","url":"https://api.chucknorris.io/jokes/etd9c1v9smqxo2xonfm2lq","value":"Chuck Norris doesn't need a debugger, he just stares down the bug until the code confesses."}Captured byte-for-byte from this run's live probe — the `id` and `value` are whichever joke the `dev` category happened to return that request, not a fixed example; a repeat call returns a different joke from the same category.
Developer reference
https://api.chucknorris.ioGotchas & limits
- Filtering `/jokes/random` by an unknown category doesn't 400 — a live probe of `/jokes/random?category=zzzz` returned HTTP 404 with the JSON envelope `{"timestamp":"...","status":404,"error":"Not Found","path":"/jokes/random"}`, so check the category against `/jokes/categories` first rather than trusting a non-error response.
- `/jokes/search` enforces a minimum query length — a live probe of `/jokes/search?query=zz` returned HTTP 400 with `{"message":"search.query: size must be between 3 and 120","violations":{"search.query":"size must be between 3 and 120"}}`; 2-character queries are rejected outright.
- CORS is wide open: a live `OPTIONS` preflight with an `Origin` header against `/jokes/random` returned `Access-Control-Allow-Origin: *` and `Access-Control-Allow-Methods: GET`, so this API is callable directly from browser JS on any origin.
- The stored category summary for this API claims "no rate limit" — this run's probes only confirm the absence of rate-limit *headers*, not the absence of any server-side cap, so don't repeat the stronger claim without a probe that actually triggers a 429.