BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl 'https://italian-jokes.vercel.app/api/jokes?limit=1'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://italian-jokes.vercel.app/api/jokes?limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
subtypequeryOptionalFilter by tone: `One-liner`, `Observational`, `Wordplay`, `Long` or `Stereotype`. Capitalisation matters. Wordplay
limitqueryOptionalHow 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

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.