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.
How it works
- Create a free GiggleTime account, or log in.
- On My Submissions, tell us what you'd like to send and roughly how many jokes.
- We read every request and reply by email, usually within a day or two.
- Once you're approved, create your key on the same page. It's shown only once, so keep it somewhere safe.
- 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/me | Your limits, and how many jokes you've sent in the last 24 hours. |
GET /api/v1/categories?language=en | Category ids and names in that language, the languages and the joke types. |
POST /api/v1/jokes | Sends one joke as JSON. |
GET /api/v1/jokes | Your jokes, newest first, with their status. Optional: limit (up to 100) and before_id for the next page. |
Fields for sending a joke
language | Required. The language code, for example en, bg or es. |
category_id | Required. A category id from the list below or from /api/v1/categories. |
type | Required. one-liner, setup-punchline, story or knock-knock. |
setup, punchline | For setup-punchline jokes, up to 300 characters each. |
text | For every other type: up to 300 characters, or 2000 for stories. |
author | Optional. Who the joke is credited to, up to 60 characters. |
nsfw | Optional. 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:
400 | invalid_language, invalid_category, invalid_joke_type, missing_text, too_long, invalid_json |
401 | unauthorized: the key is missing, wrong or revoked. |
403 | terms_required: log in on the website and accept the current terms. account_suspended |
409 | duplicate_joke: the same joke is already on GiggleTime. |
429 | too_fast, daily_limit: wait and try again later. |
503 | review_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):
duplicate | Not approved: this joke is already on GiggleTime. |
not_a_joke | Not approved: this doesn't read as a joke. |
wrong_language | Not approved: the text isn't in the language it was sent as. |
offensive | Not approved: it breaks our content guidelines. |
copied | Not approved: this looks like another comedian's material. |
quality | Not approved: it isn't a fit for GiggleTime. |
Categories
8Animals6Christmas3Dark17Everyday Life9Family12Food & Drink15Health & Aging7Misc16Money2Programming4Pun13Relationships11School5Spooky14Technology10Work
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