JokeAPI
Programmer, general, and dark-category joke API with safe-mode filtering, multiple languages, and both single-delivery and two-part joke formats. A favourite for chatbot demos and fun side projects.
🟢 Online · 41 ms
97.37%
120 req/min, no key, no credit card
No key required
Free alternatives (live ranking)
- PokéAPI — 🟢 Online · Unlimited, no key, no credit card
- Rick and Morty API — 🟢 Online · 10,000 req/day, no key, no credit card
- Random User Generator — 🟢 Online · Unlimited, no key, no credit card
Compare JokeAPI with…
- JokeAPI vs PokéAPI — Unlimited, no key, no credit card
- JokeAPI vs Rick and Morty API — 10,000 req/day, no key, no credit card
- JokeAPI vs Random User Generator — Unlimited, no key, no credit card
Frequently Asked Questions
Does JokeAPI require an API key?
No, JokeAPI is freely accessible without registration or an API key.
What is JokeAPI's free tier?
120 req/min, no key, no credit card
Is JokeAPI currently online?
We check JokeAPI every hour. The current status is shown at the top of this page. You can also see the 30-day uptime history in the chart above.
Implementation notes
When to use JokeAPI
JokeAPI is one of the few joke APIs that takes content filtering seriously. It has a `safe-mode` flag, per-flag blacklisting (`?blacklistFlags=nsfw,racist,sexist`), and category filtering (`Programming`, `Misc`, `Pun`, `Spooky`, `Christmas`). At 120 requests/minute free with no key, it suits chatbots, Slack bots, and entertainment widgets.
Common pitfalls
- JokeAPI returns two joke formats: `single` (one-liner) and `twopart` (setup + delivery). The format is determined by the joke itself, not a request parameter. Your code must handle both shapes — accessing `joke.joke` works for single-type but throws for twopart-type jokes where you need `joke.setup` and `joke.delivery` instead.
- The `Programming` category contains jokes that may be offensive or exclude non-technical audiences. Always use `safe-mode` for public-facing apps and test your category filters before launching.
- The 120 req/min limit is per IP, not per application. Serverless deployments with dedicated IPs get 120/min each; shared-IP hosting splits this budget across tenants.
- Joke IDs are stable — you can request a specific joke by ID (`/joke/Any?idRange=0-50`). However, the joke count grows over time as the community contributes. Hard-coded ID ranges in your code will eventually return fewer jokes than you expect as the valid range expands.
Quick start (bash)
curl "https://v2.jokeapi.dev/joke/Programming,Pun?safe-mode&type=twopart" Embed this badge
Add a live status badge to your README, docs, or website.
Markdown
[](https://freeapi.watch/jokeapi) HTML
<a href="https://freeapi.watch/jokeapi"><img src="https://freeapi-builder.a10ayassine.workers.dev/badge/jokeapi.svg" alt="JokeAPI Status"/></a>