Italian Jokes API
Free joke API with no key returning Italian-themed jokes, each tagged with a subtype such as Wordplay, One-liner or Observational so you can filter the tone. Live example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Italian Jokes API?
The Italian Jokes API is a free, key-free endpoint returning Italian-themed jokes. Each joke arrives with an id, a type and a subtype — Wordplay, One-liner, Observational, Long or Stereotype — so you can filter by tone before displaying anything.
The subtype taxonomy is the feature worth using, and not only for variety. `Stereotype` is one of the categories, which is exactly the sort of material you may not want surfacing unfiltered in a product. Because the classification ships with every joke rather than being something you infer, filtering it out is a one-line guard — a rare case of a novelty API making moderation straightforward instead of leaving it to you.
The response shape has one sharp edge. Passing `limit=1` returns a bare object, not an array containing one item, so a client that always indexes `[0]` breaks the moment it is pointed at a single-joke request. Decide up front whether you are handling one shape or two. Note as well that no allow-origin header is sent, so a browser fetch from your own domain will be blocked and a small proxy is required.
Quick facts
- Base URL
https://italian-jokes.vercel.app/api- Authentication
- No key or account. A small community project hosted on Vercel's free tier.
- Rate limit
- No rate-limit headers are returned. Keep request volumes modest and cache; the joke pool is small enough to fetch and store locally.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Italian Jokes API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch a random Italian joke
GET https://italian-jokes.vercel.app/api/jokes?limit=1
curl 'https://italian-jokes.vercel.app/api/jokes?limit=1'const res = await fetch("https://italian-jokes.vercel.app/api/jokes?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://italian-jokes.vercel.app/api/jokes?limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"id": 21,
"joke": "As is tradition in Italian families, Maria spends her wedding night in her family home. She was heard exclaiming, 'His shoe size is enormous!'",
"type": "Italian",
"subtype": "Long"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
subtype | query | Optional | Filter by tone: `One-liner`, `Observational`, `Wordplay`, `Long` or `Stereotype`. Capitalisation matters. Wordplay |
limit | query | Optional | How many jokes to return. Note that a limit of 1 returns a bare object rather than a one-element array. 1 |
Response fields
idinteger- Numeric joke id, stable enough to use for deduplication across calls.
jokestring- The joke text itself, already punctuated and ready to display.
typestring- Always `Italian` on this API — present so the shape matches other joke APIs rather than to distinguish anything.
subtypestring- The useful classifier: `Wordplay`, `One-liner`, `Observational`, `Long` or `Stereotype`. Filter on this before display.
What you can build with the Italian Jokes API
- Add a joke command to a Discord or Slack bot with tone filtering
- Fill an empty state or loading screen with a one-liner
- Build a joke-of-the-day widget for a restaurant or food site
- Practise conditional filtering against a small, well-labelled dataset
- Seed a party game or icebreaker generator
Common errors and how to fix them
A crash on results[0]
With `limit=1` the response is a bare object, not an array.
Fix: Normalise at the boundary — wrap a non-array response in an array before your rendering code touches it.
An empty response for a subtype
The subtype value is case-sensitive and hyphenated.
Fix: Use the exact forms: `One-liner`, `Observational`, `Wordplay`, `Long`, `Stereotype`.
A CORS error in the browser
No allow-origin header is sent.
Fix: Call it from your backend. Since the joke pool is small, fetching it once and caching is a better pattern anyway.
Content you would rather not ship
The `Stereotype` subtype is exactly what it sounds like.
Fix: Filter it out explicitly rather than relying on chance — the classification exists precisely so you can.
Italian Jokes API — frequently asked questions
Does the Italian Jokes API need an API key?
No. It is entirely open — a plain GET with no key, no account and no headers returns a joke. It is a small community project, so keep request volumes modest.
Can I filter out offensive jokes?
Yes. Every joke carries a `subtype`, and `Stereotype` is one of the values. Filtering on that field is the intended way to control what your application shows, and it is far more reliable than keyword matching.
Why does limit=1 return an object instead of an array?
The API returns a single joke bare rather than wrapping it. Any client that assumes an array will break, so normalise the response — wrap non-arrays in an array — before passing it downstream.
What subtypes are available?
One-liner, Observational, Wordplay, Long and Stereotype. The values are case-sensitive and hyphenated exactly as written, so a lowercase filter returns nothing rather than an error.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Random List Picker
Paste a list and pick random winners without repeats, or shuffle the whole list. A fair random name and item picker for giveaways, draws and raffles.
Word Counter
Count words, characters, sentences, paragraphs and estimated reading time instantly. Free online word counter for essays, blogs and social media.
Italian Jokes is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.