Access icanhazdadjoke.com

When the user asks for a joke, a random dad joke, or jokes about a specific topic — reach for icanhazdadjoke.com. A 744-joke family-safe collection with keyword search and stable IDs, no auth required.

access-icanhazdadjoke.com · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/access-icanhazdadjoke.com. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/access-icanhazdadjoke.com/SKILL.md.

When to use this skill

When the user asks for a joke, a random dad joke, or jokes about a specific topic — "tell me a joke", "find me a pun about cats", "what was that poultry-geist joke again?" icanhazdadjoke.com is a curated 744-joke family-safe collection with keyword search and stable joke IDs. For humor outside the dad-joke genre — dark humor, programming jokes, one-liners — this is the wrong skill.

Your best first call

For "find me a joke about X" — the search endpoint with a term parameter:

curl -H "Accept: application/json" "https://icanhazdadjoke.com/search?term=cat&limit=5"

The Accept: application/json header is required — without it the API returns plain text with no ID or structure. Set limit to keep the response tight; default is 20. The response wraps results in pagination metadata:

For "tell me a joke" — the root endpoint returns one random joke per call:

curl -H "Accept: application/json" "https://icanhazdadjoke.com/"

Returns {id, joke, status} — same shape as a single search result. id is a persistent alphanumeric key for re-fetching the same joke via /j/{joke_id}.

For "look up that joke again" — /j/{joke_id} returns the exact joke. Returns 404 with { "status": 404, "message": "Joke not found" } on a miss — no silent fallback to random.

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can fetch a random dad joke, search the 744-joke corpus by keyword, or re-fetch one by ID from icanhazdadjoke.com — just set the Accept header to JSON, no auth needed.

APIs this skill uses

icanhazdadjoke · primary · verified

The largest selection of dad jokes on the internet. Fetch a random joke, a specific joke by ID, or search for jokes. No authentication required.

Generated from

icanhazdadjoke tutorial Getting Started with icanhazdadjoke

SKILL.md source (frontmatter + body)
---
name: access-icanhazdadjoke.com
description: When the user asks for a joke, a random dad joke, or jokes about a specific topic — reach for icanhazdadjoke.com. A 744-joke family-safe collection with keyword search and stable IDs, no auth required.
---

## When to use this skill

When the user asks for a joke, a random dad joke, or jokes about a specific topic — "tell me a joke", "find me a pun about cats", "what was that poultry-geist joke again?" icanhazdadjoke.com is a curated 744-joke family-safe collection with keyword search and stable joke IDs. For humor outside the dad-joke genre — dark humor, programming jokes, one-liners — this is the wrong skill.

## Your best first call

For "find me a joke about X" — the search endpoint with a `term` parameter:

```bash
curl -H "Accept: application/json" "https://icanhazdadjoke.com/search?term=cat&limit=5"
```

The `Accept: application/json` header is required — without it the API returns plain text with no ID or structure. Set `limit` to keep the response tight; default is 20. The response wraps results in pagination metadata:

- `results` — array of `{id, joke}` objects
- `total_jokes` — total matches before pagination
- `total_pages`, `current_page`, `next_page` — cursor-based paging
- `search_term` — echoes the term you sent

For "tell me a joke" — the root endpoint returns one random joke per call:

```bash
curl -H "Accept: application/json" "https://icanhazdadjoke.com/"
```

Returns `{id, joke, status}` — same shape as a single search result. `id` is a persistent alphanumeric key for re-fetching the same joke via `/j/{joke_id}`.

For "look up that joke again" — `/j/{joke_id}` returns the exact joke. Returns 404 with `{ "status": 404, "message": "Joke not found" }` on a miss — no silent fallback to random.

## Fallbacks (when the best call isn't enough)

- No fallback — icanhazdadjoke.com is the canonical dad joke API. If the search returns `total_jokes: 0`, the topic simply isn't in the 744-joke corpus. For other humor genres, this skill has nothing to offer.

## Pitfalls

- **Omit the `Accept: application/json` header and you get plain text** — a raw joke string with no ID, no JSON structure. The API defaults to `text/plain` (it started as a Slack integration). Always set the header.
- **Empty `term` on `/search` returns all 744 jokes paginated.** This is the firehose. Always include a `term` parameter.
- **`previous_page` is `1`, not `null`, on page 1.** The API uses 1-indexed pages and never nulls out the previous-page pointer. Check `current_page` to detect the first page.
- **Search matches substrings case-insensitively.** "cat" matches "cats", "category", and "scattered". Filter client-side if you need exact word matching.

## One-line summary for the user

I can fetch a random dad joke, search the 744-joke corpus by keyword, or re-fetch one by ID from icanhazdadjoke.com — just set the Accept header to JSON, no auth needed.

« Back to all skills