GiggleTime GiggleTime
Menu
Go Premium Submit a Joke Comedians About FAQs Contact Add a comedian
Follow us

Legal
Privacy Policy Terms of Service Cookie Policy Refund and Cancellation Policy Attributions
Login
Language
Categories
Settings
Language English
Safe Mode
Random Jokes Autoplay
Notifications

Send your jokes to GiggleTime

GiggleTime is a joke site in 26 languages. If you write jokes, run a joke account or keep a collection, you can send them to us from your own app or script. Every joke is read by a person before it goes live.

Read the API reference

How it works

  1. Create a free GiggleTime account, or log in.
  2. On My Submissions, tell us what you'd like to send and roughly how many jokes.
  3. We read every request and reply by email, usually within a day or two.
  4. Once you're approved, create your key on the same page. It's shown only once, so keep it somewhere safe.
  5. Send jokes with a simple HTTPS request. Each one waits for review, and you can check its status at any time.

How we review jokes

Every joke, whether it comes from the API or from the form on our website, is read by a person before it's published. Most are reviewed within a day.

We check that it reads as a joke, that it's in the language you chose and fits its category, and that it isn't already on GiggleTime in any language. We may fix a typo or move a joke to a better category.

If we can't use a joke, we always tell you why: the reason appears on My Submissions and in the API. Approved jokes are published on GiggleTime and can be read in all our languages.

What we accept

  • Jokes you wrote yourself, or jokes that are free to share, such as traditional jokes and folklore.
  • One-liners, setup and punchline jokes, short stories and knock-knock jokes, in any of our 26 languages.
  • Jokes you wrote with some help from AI are fine if you've checked them and they're good. We don't accept jokes generated by AI in bulk.
  • No material copied from other comedians, books or websites, no hate or harassment, and no links or advertising.
  • Mark adult humor with the NSFW flag. It's hidden from visitors who haven't switched it on.

Limits

  • Up to 20 jokes in 24 hours per key at first. We raise the limit for contributors whose jokes we keep approving.
  • At most 10 jokes a minute.
  • When our review queue is full, new jokes are refused for a while. Please try again the next day.

API reference

All requests go to https://www.giggletime.app/api/v1/ and need your key in the Authorization header:

Authorization: Bearer gtj_your_key

Calls

GET /api/v1/meYour limits, and how many jokes you've sent in the last 24 hours.
GET /api/v1/categories?language=enCategory ids and names in that language, the languages and the joke types.
POST /api/v1/jokesSends one joke as JSON.
GET /api/v1/jokesYour jokes, newest first, with their status. Optional: limit (up to 100) and before_id for the next page.

Fields for sending a joke

languageRequired. The language code, for example en, bg or es.
category_idRequired. A category id from the list below or from /api/v1/categories.
typeRequired. one-liner, setup-punchline, story or knock-knock.
setup, punchlineFor setup-punchline jokes, up to 300 characters each.
textFor every other type: up to 300 characters, or 2000 for stories.
authorOptional. Who the joke is credited to, up to 60 characters.
nsfwOptional. true for adult humor.

Examples

curl

curl -X POST https://www.giggletime.app/api/v1/jokes \
  -H "Authorization: Bearer gtj_your_key" \
  -H "Content-Type: application/json" \
  -d '{"language": "en", "category_id": 8, "type": "setup-punchline",
       "setup": "Why did the scarecrow win an award?",
       "punchline": "He was outstanding in his field."}'

Python

import requests

r = requests.post("https://www.giggletime.app/api/v1/jokes",
    headers={"Authorization": "Bearer gtj_your_key"},
    json={"language": "en", "category_id": 8, "type": "one-liner",
          "text": "I told my wife she draws her eyebrows too high. She looked surprised."})
print(r.status_code, r.json())

JavaScript

const r = await fetch("https://www.giggletime.app/api/v1/jokes", {
  method: "POST",
  headers: { "Authorization": "Bearer gtj_your_key", "Content-Type": "application/json" },
  body: JSON.stringify({ language: "en", category_id: 8, type: "one-liner",
    text: "I'm reading a book about anti-gravity. It's impossible to put down." })
});
console.log(r.status, await r.json());

Responses

A joke that was received answers 201 with its id. It stays pending until we review it:

{"id": 1830, "status": "pending", "remaining_today": 19}

Errors answer with a code you can act on:

400invalid_language, invalid_category, invalid_joke_type, missing_text, too_long, invalid_json
401unauthorized: the key is missing, wrong or revoked.
403terms_required: log in on the website and accept the current terms. account_suspended
409duplicate_joke: the same joke is already on GiggleTime.
429too_fast, daily_limit: wait and try again later.
503review_queue_full: please try again the next day.

Statuses and reasons

In GET /api/v1/jokes every joke is pending, approved (with its url) or rejected (with a reason code and the reason in the joke's language):

duplicateNot approved: this joke is already on GiggleTime.
not_a_jokeNot approved: this doesn't read as a joke.
wrong_languageNot approved: the text isn't in the language it was sent as.
offensiveNot approved: it breaks our content guidelines.
copiedNot approved: this looks like another comedian's material.
qualityNot approved: it isn't a fit for GiggleTime.

Categories

  • 8 Animals
  • 6 Christmas
  • 3 Dark
  • 17 Everyday Life
  • 9 Family
  • 12 Food & Drink
  • 15 Health & Aging
  • 7 Misc
  • 16 Money
  • 2 Programming
  • 4 Pun
  • 13 Relationships
  • 11 School
  • 5 Spooky
  • 14 Technology
  • 10 Work

Languages

ar العربية bg Български ca Català cs česky cy Cymraeg da dansk de Deutsch el Ελληνικά en English es español et eesti, eesti keel fr français hi हिन्दी, हिंदी id Bahasa Indonesia it Italiano ja 日本語 ka ქართული nl Nederlands, Vlaams pl polski pt Português ru Русский sv svenska tr Türkçe uk Українська vi Tiếng Việt zh 中文

Questions

Does it cost anything?

No. The API is free.

Who owns the jokes I send?

You keep any rights you have. By sending a joke you allow GiggleTime to publish it, translate it and show it in our apps, as our terms describe. Terms of Service

Can I remove a joke later?

Yes. Write to us and we'll take it down. Contact

What if my key leaks?

Create a new key on My Submissions. The old one stops working at once.

I'd rather show jokes on my own site.

Then try our free Joke of the Day widget. Joke widget for your site