For years, the Internet Chuck Norris Database (api.icndb.com) was the fun first API in countless fetch/AJAX tutorials, bootcamp exercises, and "build your first app" videos: one keyless GET, one joke back. Today that request does something worse than fail:
curl -sL http://api.icndb.com/jokes/random | grep -o '<title>[^<]*'
# <title>ROYALTOGEL Situs Slot Gacor Terpercaya 2025 โ Bonus Besar & Mudah Jackpot
The API is gone and the domain has been taken over: every path 301-redirects to a slot-machine gambling-spam page. Verified by direct request on September 7, 2026 โ and tracked hourly here, so if that ever changes, the status page will say so before this one does.
api.icndb.com โ an old tutorial repo someone forks, a demo app still deployed, a README "try it" link โ now pulls content from, or sends readers to, a spam site. If you've ever shipped or published code with an ICNDb URL in it, grep for icndb and remove it.ICNDb has company. These are the little keyless APIs that a generation of beginner tutorials were built on โ all re-verified by direct request on September 7, 2026, all tracked hourly on the live status board:
| API | What tutorials used it for | Status today |
|---|---|---|
api.icndb.com | Chuck Norris jokes | Domain hijacked โ gambling spam (tracked) |
boredapi.com | "I'm bored" activity suggestions | DNS no longer resolves (tracked) |
numbersapi.com | Number trivia | HTTP 404 on every fact URL (tracked) |
jservice.io | Jeopardy! trivia questions | Connection times out (tracked) |
api.forismatic.com | Random quotes | Connection times out (tracked) |
balldontlie.io (old /api/v1) | NBA stats | Old keyless API 404s; lives on at api.balldontlie.io but now requires an API key (keyless GET โ 401) (tracked) |
swapi.co | Star Wars data | Redirects to a Pipedream marketing page โ use swapi.dev instead (tracked) |
Being generous first โ if the point was the joke/trivia itself, these keyless APIs answered a plain GET with real JSON when we checked on September 7, 2026:
| API | What you get | Try |
|---|---|---|
| api.chucknorris.io | The spiritual ICNDb successor โ random Chuck Norris jokes, categories, search | curl https://api.chucknorris.io/jokes/random |
| official-joke-api | Setup/punchline jokes | curl https://official-joke-api.appspot.com/random_joke |
| uselessfacts.jsph.pl | Random facts | curl https://uselessfacts.jsph.pl/api/v2/facts/random |
| opentdb.com | Trivia questions (the jservice niche) | curl "https://opentdb.com/api.php?amount=1" |
| bored-api.appbrewery.com | The Bored API dataset, rehosted by App Brewery for course students | curl https://bored-api.appbrewery.com/random |
| swapi.dev | Star Wars data (the swapi.co successor) | curl https://swapi.dev/api/people/1/ |
These are mostly volunteer-run side projects too โ which is exactly how the graveyard above got filled. Enjoy them, but don't build a course, a README, or a deployed demo on the assumption that any of them outlives your content.
Every entry in that graveyard broke someone's tutorial the same way: the author didn't control the API. If you're writing a tutorial (or following one), the durable move is an API that belongs to the tutorial. With Mockbird, one curl turns your own jokes into your own random-joke endpoint โ no signup:
curl -s -X POST "https://mockbird.mockbird.workers.dev/api/projects/import?name=jokes" \
-H 'content-type: application/json' --data '{"jokes":[
{"id":1,"setup":"Why do programmers prefer dark mode?","punchline":"Because light attracts bugs."},
{"id":2,"setup":"Why did the developer go broke?","punchline":"He used up all his cache."},
{"id":3,"setup":"How many programmers does it take to change a light bulb?","punchline":"None โ hardware problem."}
]}'
# โ { "id": "abc123xyz0", "baseUrl": "https://mockbird.mockbird.workers.dev/m/abc123xyz0", ... }
Your records, hosted verbatim, full CRUD. And the ICNDb move โ one random joke per request โ is a query param:
curl "https://mockbird.mockbird.workers.dev/m/YOUR_ID/jokes?sortBy=random&limit=1"
# [ { "id": 2, "setup": "Why did the developer go broke?", "punchline": "He used up all his cache." } ]
No account, CORS on by default (browser fetch() works from any origin), writes persist, 10,000 requests/day per project. Want something to hit right now without creating anything? The shared demo project is keyless:
curl "https://mockbird.mockbird.workers.dev/m/demo/products?sortBy=random&limit=1"
Prefer clicking to curling: paste your db.json in the dashboard or create a seeded project in one click.
| Survivor APIs (chucknorris.io etc.) | Mockbird | |
|---|---|---|
| Pre-loaded fun data (jokes, trivia) | โ the point | โ you bring the data (or use faker-style seeds) |
| Under your control / can't vanish under your tutorial | โ volunteer-run | โ
your project, your records; eject anytime via /db.json |
| Writes persist (teach POST/PUT/DELETE for real) | โ read-only | โ full CRUD |
| Filters, pagination, relations, GraphQL, OpenAPI export | โ | โ |
Simulate errors/latency (?mock_status=500, ?mock_delay=2000) | โ | โ |
Written by the Mockbird maker โ bias disclosed. If you just want a Chuck Norris joke, api.chucknorris.io is alive and delightful โ use it. Use Mockbird when the API is teaching material or test scaffolding: something you need to still work when a stranger runs your tutorial three years from now. Every status claim above was verified by direct request on September 7, 2026, and each service is re-checked every 30 minutes.
Is ICNDb coming back? Almost certainly not in place: the domain itself now serves unrelated spam, which usually means it lapsed and was re-registered. api.chucknorris.io is the maintained successor for the same jokes. The status page keeps checking anyway.
Why did all of these die? Free, keyless, no revenue, one maintainer, growing abuse traffic. It's the natural life cycle of hobby APIs โ the surprise isn't that they die, it's how much published teaching material assumes they won't.
I maintain a tutorial that used one of these โ what's the least-work fix? Point it at a survivor above if the data matters, or spend one curl making the tutorial its own API (recipe up top) if the fetching is what you're teaching. Either way, embed the API's status badge so readers can see at a glance whether the endpoint is up.
Related: Quotable (quotes API) alternative ยท free fake REST APIs compared ยท JSONPlaceholder alternative ยท host a JSON file as an API ยท REST Countries alternative. Create your API โ