Help
RSS
API
Feed
Maltego
Contact
Domain > v2.jokeapi.dev
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2021-09-07
172.64.129.37
(
ClassC
)
2025-06-05
104.21.76.251
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Thu, 05 Jun 2025 06:17:18 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveCache-Control: max-age3600Expires: Thu, 05 Jun 2025 07:17:18 GMTLocation: https://v2.jokeapi.dev/Report-To: {endpoints:{url:https:\/\/a.nel.cloudflare.com\/report\/v4?sep68fJa7swdKbtRxO4zJNrM5m9A%2FYOZJf53suoJ5C6sCaoXd5e%2FzUUWdX5q0%2B6CH5bocsaWqOU%2F2PUJMq1WwOsmU4KmHU0jTYAa1syjcpsLJEGvkjwgm3Mui9augKqmSCA%3D%3D},group:cf-nel,max_age:604800}NEL: {success_fraction:0,report_to:cf-nel,max_age:604800}Server: cloudflareCF-RAY: 94ad8bd10d681d57-PDXalt-svc: h3:443; ma86400server-timing: cfL4;desc?protoTCP&rtt7651&min_rtt7651&rtt_var3825&sent1&recv3&lost0&retrans0&sent_bytes0&recv_bytes53&delivery_rate0&cwnd249&unsent_bytes0&cid0000000000000000&ts0&x0 html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>cloudflare/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 05 Jun 2025 06:17:19 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareAccess-Control-Allow-Origin: *Access-Control-Request-Method: GETAccess-Control-Allow-Methods: GET, POST, HEAD, OPTIONS, PUTAccess-Control-Allow-Headers: *Allow: GET, POST, HEAD, OPTIONS, PUTApi-Info: JokeAPI v2.3.3 (https://v2.jokeapi.dev)Cache-Control: no-cache, no-store, must-revalidate, no-transformPragma: no-cacheExpires: 0Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?s0D%2BTvrAUHNb4kEvaiJplo3%2Bizop7iFWLXf8Bk9VTd6LBA3lAQC4%2FpQeM4W1xQYAWkjvKPrppapDJTI9AWGXX0rCFBrZ214zyFzw6sU22}}Content-Security-Policy: default-src https: unsafe-eval unsafe-inline; object-src noneStrict-Transport-Security: max-age15552000Referrer-Policy: no-referrer, strict-origin-when-cross-originX-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-Xss-Protection: 1; modeblockCf-Cache-Status: DYNAMICVary: accept-encodingNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}CF-RAY: 94ad8bd16cbcc146-PDXalt-svc: h3:443; ma86400 !-- JokeAPI Documentation By Sv443 (https://sv443.net or https://github.com/Sv443) Licensed under the MIT license (https://sv443.net/LICENSE)-->!DOCTYPE html>html langen> head> !-- #MARKER head --> title>JokeAPI - Documentation/title> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> meta namepagename contentJokeAPI> meta charsetUTF-8> meta namedate content2025-05-04T22:56:46.935Z> !-- Date at which website was modified last or since JokeAPIs latest startup --> meta namepagename contentJokeAPI> meta nameviewport contentwidthdevice-width, initial-scale1.0> meta nameHandheldFriendly contenttrue> meta namedescription contentJokeAPI is a RESTful API that serves jokes from many categories while also offering a lot of filtering methods> meta nametwitter:card contentJokeAPI is a RESTful API that serves jokes from many categories while also offering a lot of filtering methods> meta namesubject contentAPI> meta namecopyright contentSv443 - Licensed under MIT license (https://sv443.net/LICENSE)> meta nameauthor contentSv443> meta propertyog:title contentJokeAPI> meta propertyog:url contenthttps://v2.jokeapi.dev> meta propertyog:description contentJokeAPI is a RESTful API that serves jokes from many categories while also offering a lot of filtering methods> meta propertyog:image content./favicon.ico> meta propertyog:type contentprofile> meta propertyog:locale contenten_US> meta propertyog:locale:alternate contenten_GB> meta propertyog:locale:alternate contenten_AU> meta nameapplication-name contentJokeAPI> meta nametheme-color content#101747> link relicon typeimage/png href./favicon.ico> !-- IE detection --> script srchttps://sv443.net/cdn/jokeapi/isIE.js>/script> !-- #MARKER dependencies --> !-- Have to do it with an absolute path because the page doesnt always have a trailing slash and that *somehow* makes it redirect to the page root: --> !-- link relstylesheet hrefhttps://v2.jokeapi.dev/static/index.css>--> link relstylesheet hrefstatic/index.css> script srchttps://cdn.jsdelivr.net/gh/Sv443/jslib@1.5.0/jslib.js>/script> !-- Have to do it with an absolute path because the page doesnt always have a trailing slash and that *somehow* makes it redirect to the page root: --> !-- script srchttps://v2.jokeapi.dev/static/index.js>/script>--> script srcstatic/index.js>/script> script srchttps://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js?skinsunburst>/script> !-- Google Code-Prettify --> /head> body onloadonLoad()> !-- #MARKER Main --> div idbodyFlexContainer> !-- #MARKER Header --> header classbodyFlexItem> span classheaderitem l> span idheadersidenavopenwrapper classnoselect> a idsideNavOpen classnoul titleClick to open>☰/a> /span> /span> span classheaderitem m> a iddocTitle hrefhttps://v2.jokeapi.dev classnoselect titleClick to reload>JokeAPI Documentation/a> /span> span classheaderitem r> span idheaderversion> span idheaderVersionNumber>v2.3.3/span> a idchangelogLink hrefhttps://github.com/Sv443-Network/JokeAPI/blob/master/changelog.md#readme target_blank>(Changelog)/a>br> a hrefhttps://github.com/Sv443-Network/JokeAPI>GitHub/a> span classmobileHide>• a href#legal>Legal Stuff/a> /span>• a hrefhttps://github.com/Sv443>Author/a> /span> /span> /header> main idcontent classbodyFlexItem> noscript> h3 stylecolor: #ff6655;>You have disabled the execution of JavaScript code in your browser. Please note that this will severely impact your experience on this page./h3> span stylecolor: #ff6655;> If you didnt disable JavaScript code, the website might have loaded incorrectly. In this case, please press the kbd>F5/kbd> key to try again. /span> br>br> /noscript> div idusageTerms> h2 stylecolor: #ff6655;>By using this website and API you are agreeing to the a hrefhttps://sv443.net/privacypolicy/en>privacy policy/a>/h2> div idusageTermsInnerLayout> span classitm> span classmimica onclickprivPolMoreInfo()>(Click here to get more information on what data JokeAPI collects)/span> /span> span classitm> span classmimica onclickhideUsageTerms()> span classlText>✔/span> I agree /span> /span> /div> /div> !-- #MARKER Information --> div classdocHeader targetBlink idinfo>a classheaderAnchorContainer href#info titleClick to link to this header>🔗/a>span classdocHeaderText>Information:/span>/div> JokeAPI is a REST API that delivers consistently formatted jokes.br> It can be used u>without any API token, membership, registration or payment./u>br> It supports a wide variety of filters that can be applied to get just the right jokes for your application.br> The usage is very simple and similar to other RESTful APIs and requires only basic knowledge of HTTP requests and JSON, XML, YAML or plain text.br> If a wrapper library is available for your language, you can use that to make it even easier to communicate with JokeAPI. You can find a a href#wrappers>list of community-made wrappers here./a>br> br> If you come across a term you dont understand, you can try span classmimica onclickopenNav()>opening the menu/span> and clicking on the section Terminology.br> JokeAPI currently serves 1368 jokes from 6 different languages. To submit a new joke, a href#submit>please click here./a>br> br> To report a bug or a grammar mistake or to suggest a feature, please a hrefhttps://github.com/Sv443-Network/JokeAPI/issues/new/choose target_blank>use the GitHub issue tracker./a>br> If you want to contribute to JokeAPI, please read the a hrefhttps://github.com/Sv443-Network/JokeAPI/blob/master/.github/Contributing.md target_blank>Contributing Guide./a>br> br> span stylecolor: #ff8b61;>If you are new to JokeAPI, please start by reading the a href#getting-started>Getting Started Guide/a>/span>br> br> !-- #SECTION Note --> div classsubHeaderContainer>a href#note titleClick to link to this header>§/a> span classsubHeader idnote>Note:/span>/div> If you enjoy using JokeAPI and want to support the development, please consider donating a hrefhttps://github.com/sponsors/Sv443 target_blank>here ♥/a>br> br> I cant speak all languages, so please note that I cant ensure format and validity of jokes that arent in English or German.br> If you do come across an invalid joke or a joke that is formatted or categorized incorrectly, please consider a hrefhttps://github.com/Sv443-Network/JokeAPI/issues/new?assigneesSv443&labelsreported+joke&template3_report_a_joke.md&title target_blank>opening an issue/a> or a hrefhttps://github.com/Sv443-Network/JokeAPI/blob/master/.github/Contributing.md#submitting-or-editing-jokes target_blank>submitting a pull request./a>br> br> !-- #SECTION Uptime --> div classsubHeaderContainer>a href#uptime titleClick to link to this header>§/a> span classsubHeader iduptime>Uptime:/span>/div> table iduptimeTable> tr> td>Last day:/td> td>img srchttps://img.shields.io/uptimerobot/ratio/1/m784261094-bff76b959ebb8fc39f7eb2d0 classbadge>/td> /tr> tr> td>Last week:/td> td>img srchttps://img.shields.io/uptimerobot/ratio/7/m784261094-bff76b959ebb8fc39f7eb2d0 classbadge>/td> /tr> tr> td>Last month:/td> td>img srchttps://img.shields.io/uptimerobot/ratio/30/m784261094-bff76b959ebb8fc39f7eb2d0 classbadge>/td> /tr> /table> a hrefhttps://status.sv443.net/ target_blank>(more stats)/a> br> br> !-- #SECTION Security --> div classsubHeaderContainer>a href#security titleClick to link to this header>§/a> span classsubHeader idsecurity>Security:/span>/div> JokeAPI has been a target of DoS attacks in the past, which is why there is now a limit of 120 requests per minute and why joke submissions are manually curated. For more information a href#rate-limiting>click here./a>br> br> All dependencies are tested for vulnerabilities by a hrefhttps://snyk.io/ target_blank>Snyk/a>, you can find a summary of the known vulnerabilities a hrefhttps://snyk.io/test/github/Sv443-Network/JokeAPI target_blank>here./a>br> Page security score (powered by Mozilla Observatory): a hrefhttps://observatory.mozilla.org/analyze/sv443.net target_blank>img srchttps://img.shields.io/mozilla-observatory/grade-score/sv443.net?publish classbadge>/a>br> !-- #MARKER Information --> div classdocHeader targetBlink idnews>a classheaderAnchorContainer href#news titleClick to link to this header>🔗/a>span classdocHeaderText>News:/span>/div> ul idnewsList> li> b>JokeAPI has its own domain!/b>br> You can now replace the base URL mark>https://sv443.net/jokeapi/v2/mark> with mark>https://v2.jokeapi.dev//mark>br> Note: you should always use the mark>v2/mark> subdomain to call the API but you can omit it if you just want to view the documentation.br> For backwards compatibility the old URL will still be usable until version 2 will be deprecated. /li> li> b>Is JokeAPI serving too many offensive jokes?/b>br> Try using version 2.3.0s a href#safe-mode>safe mode/a> and the a href#blacklist-flags>explicit language flag./a> /li> /ul> !-- #MARKER Try It --> div classdocHeader targetBlink idtry-it>a classheaderAnchorContainer href#try-it titleClick to link to this header>🔗/a>span classdocHeaderText>Try it out here:/span>/div> div idtryItContainer classhighlightedContainer> table> tr> td> Select a href#categories>category / categories/a>: /td> td> div classmultiselect noselect idcategoryWrapper> div> input typeradio namecatSelect valueany idcat-radio1 onchangereRender()>label forcat-radio1>Any/label> /div> div> input typeradio namecatSelect valuemulti idcat-radio2 onchangereRender()>label forcat-radio2>Custom:/label> span idcatSelectMulti> input typecheckbox idcat-cb1 onchangereRender() disabled>label forcat-cb1>Programming/label> input typecheckbox idcat-cb2 onchangereRender() disabled>label forcat-cb2>Misc/label> input typecheckbox idcat-cb3 onchangereRender() disabled>label forcat-cb3>Dark/label> input typecheckbox idcat-cb4 onchangereRender() disabled>label forcat-cb4>Pun/label> input typecheckbox idcat-cb5 onchangereRender() disabled>label forcat-cb5>Spooky/label> input typecheckbox idcat-cb6 onchangereRender() disabled>label forcat-cb6>Christmas/label> /span> /div> /div> /td> /tr> tr> td> Select a href#languages-endpoint>language/a>: /td> td> div classmultiselect noselect> select idlcodeSelect classappendLangOpts>/select> /div> /td> /tr> tr> td> Select a href#blacklist-flags>flags/a> to blacklist: /td> td> div classmultiselect noselect> (optional) input typecheckbox idblf-cb1 onchangereRender()>label forblf-cb1>nsfw/label> input typecheckbox idblf-cb2 onchangereRender()>label forblf-cb2>religious/label> input typecheckbox idblf-cb3 onchangereRender()>label forblf-cb3>political/label> input typecheckbox idblf-cb4 onchangereRender()>label forblf-cb4>racist/label> input typecheckbox idblf-cb5 onchangereRender()>label forblf-cb5>sexist/label> input typecheckbox idblf-cb6 onchangereRender()>label forblf-cb6>explicit/label> /div> /td> /tr> tr> td> Select a href#response-formats>response format/a>: /td> td> div classmultiselect noselect> input typeradio idfmt-cb1 nameformatRadio valuejson onchangereRender()>label forfmt-cb1>default (json)/label> input typeradio idfmt-cb2 nameformatRadio valuexml onchangereRender()>label forfmt-cb2>xml/label> input typeradio idfmt-cb3 nameformatRadio valueyaml onchangereRender()>label forfmt-cb3>yaml/label> input typeradio idfmt-cb4 nameformatRadio valuetxt onchangereRender()>label forfmt-cb4>plain text/label> /div> /td> /tr> tr> td> Select at least one a href#joke-type>joke type/a>: /td> td> div classmultiselect noselect idtypeSelectWrapper> input typecheckbox idtyp-cb1 onchangereRender()>label fortyp-cb1>single/label> input typecheckbox idtyp-cb2 onchangereRender()>label fortyp-cb2>twopart/label> /div> /td> /tr> tr> td> Search for a joke thatbr>contains this a href#search-string>search string/a>: /td> td> div classmultiselect noselect> input typetext idsearchStringInput oninputreRender() placeholder(optional)> /div> /td> /tr> tr> td> Search for a jokebr>in this a href#id-range>ID range/a>: /td> td> div classmultiselect noselect ididRangeWrapper> (optional) From: input typenumber ididRangeInputFrom value0 min0 step1 oninputreRender() max1367> To: input typenumber ididRangeInputTo value1367 min0 step1 oninputreRender() max1367> /div> /td> /tr> tr> td> a href#amount>Amount/a> of jokes: /td> td> div classmultiselect noselect idjokeAmountWrapper> input typenumber idjokesAmountInput value1 min1 step1 oninputreRender() max10> /div> /td> /tr> /table> br> br> div idurlBuilderWrapper classflexItem> URL: span idurlBuilderUrl>(Loading...)/span>br> button onclickresetTryItForm(true)>Reset Form/button> button onclicksendTryItRequest()>Send Request >/button> /div>code idurlBuilderPrettyprint classlang-json flexItem r>span classnocode codeheader>Result:/span>div classactualCode idtryItResult>(Set parameters and click Send Request above)/div>/code> br> span idtryItFormLatency>/span> /div> !-- #MARKER Getting Started --> div classdocHeader targetBlink idgetting-started>a classheaderAnchorContainer href#getting-started titleClick to link to this header>🔗/a>span classdocHeaderText>Getting Started:/span>/div> JokeAPI doesnt require any API token, authorization or payment to work, although there is a hard limit of 120 requests per minute due to some DoS attacks I have been getting.br> To start using JokeAPI, you can do one of these two things:br> ul classlispacer> li> You can see if your language has a wrapper for JokeAPI (to see a list of community-made wrappers, a href#wrappers>click here/a>)br> Then, follow its documentation to communicate with the API (Disclaimer: I dont take any responsibility for their code). /li> li> You can directly communicate with JokeAPI with HTTP requests (XHR) from within your code.br> Heres a few resources to get you started: (a hrefhttps://medium.com/better-programming/crash-course-in-http-requests-using-python-59246373a187 target_blank>Python XHR Crash Course/a>, a hrefhttps://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest target_blank>JavaScript XHR Documentation/a>, a hrefhttps://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?viewnetcore-3.1 target_blank>.NET HttpClient Class Documentation/a>)br> Once you know how to send HTTP requests, please take a look at a href#endpoints>all the endpoints JokeAPI has./a>br> After youve finished reading that, you can start testing out the different endpoints with a client such as a hrefhttps://www.getpostman.com/ target_blank>Postman/a> and look at some examples by a href#examples>going to the Examples section./a> /li> /ul> br> br> If your project really cant contain any explicit jokes, consider enabling the a href#safe-mode>Safe Mode./a>br> br> If you know any good jokes and want to add them to JokeAPI, please a href#submit>click here./a>br> If you need any help, feel free to a hrefhttps://sv443.net/discord target_blank>join my Discord server./a>br> br> I struggled at explaining some features so consult the provided examples if you dont understand them.br> !-- #MARKER Wrappers --> div classdocHeader targetBlink idwrappers>a classheaderAnchorContainer href#wrappers titleClick to link to this header>🔗/a>span classdocHeaderText>Community-made API Wrappers:/span>/div> A wrapper library translates some API into an interface that is easier to use for a certain language or environment.br> In the case of RESTful APIs like JokeAPI, a wrapper library makes it so you can use your languages features to communicate with the API while the wrapper will do all the HTTP requests for you in the background.br>br> Disclaimer: I will not take any responsibility for the wrappers, they are entirely community-made and maintained, so I cant ensure security, validity and compatibility.br> Also, some of these might be outdated or not finished yet. Please consider supporting the creators or contributing to the libraries :)br> br> The following is a list of officially recognized JokeAPI wrappers:br> br> table idwrapperTable> tr> th>/th> th>Language/th> th>Wrapper/th> th>Author/th> /tr> tr> td classwrappericon>img classminiimg srcstatic/csharp-icon>/td> td>C#/td> td>a hrefhttps://github.com/DanBuxton/JokeAPI-CS-Wrapper#readme target_blank>JokeAPI - C#/a>/td> td>a hrefhttps://github.com/DanBuxton target_blank>DanBuxton/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/dart-icon>/td> td>Dart/td> td>a hrefhttps://github.com/MichaelDark/jokeapi#readme target_blank>JokeAPI - Dart/a>/td> td>a hrefhttps://github.com/MichaelDark target_blank>MichaelDark/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/golang-icon>/td> td>Go/td> td>a hrefhttps://github.com/Icelain/jokeapi#readme target_blank>jokeapi-go/a>/td> td>a hrefhttps://github.com/Icelain target_blank>Icelain/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/java-icon>/td> td>Java/td> td>a hrefhttps://github.com/the-codeboy/Jokes4J#readme target_blank>Jokes4J (com.github.the-codeboy.Jokes4J)/a>/td> td>a hrefhttps://github.com/the-codeboy target_blank>the-codeboy/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/java-icon>/td> td>Java/td> td>a hrefhttps://github.com/EasyG0ing1/JokeAPI target_blank>JokeAPI - Java (com.simtechdata.jokeapi)/a>/td> td>a hrefhttps://github.com/EasyG0ing1 target_blank>EasyG0ing1/a>/td> /tr> tr> td classwrappericon> img classminiimg srcstatic/kotlin-icon> img classminiimg srcstatic/java-icon> img classminiimg srcstatic/android-icon> /td> td>Kotlin, Java, Android/td> td>a hrefhttps://github.com/ethauvin/jokeapi#readme target_blank>JokeAPI for Kotlin, Java and Android/a>/td> td>a hrefhttps://github.com/ethauvin target_blank>ethauvin/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/java-icon>/td> td>Java/td> td>a hrefhttps://github.com/khurozov/jokeapi-java#readme target_blank>JokeAPI - Java (uz.khurozov.jokeapi-java)/a>/td> td>a hrefhttps://github.com/khurozov target_blank>khurozov/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/nodejs-icon>/td> td>Node.js/td> td>a hrefhttps://github.com/sahithyandev/sv443-joke-api-js-wrapper#readme target_blank>JokeAPI - JavaScript wrapper/a>/td> td>a hrefhttps://github.com/sahithyandev target_blank>sahithyandev/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/odin-icon>/td> td>Odin/td> td>a hrefhttps://github.com/IllusionMan1212/jokeapi-odin#readme target_blank>JokeAPI Odin wrapper/a>/td> td>a hrefhttps://github.com/IllusionMan1212 target_blank>IllusionMan1212/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/php-icon>/td> td>PHP/td> td>a hrefhttps://github.com/JustPush-io/php-jokeapi#readme target_blank>JokeAPI PHP/a>/td> td>a hrefhttps://www.justpush.io/ target_blank>JustPush.io/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/python-icon>/td> td>Python/td> td>a hrefhttps://github.com/benjhar/JokeAPI-Python#readme target_blank>Sv443s JokeAPI Python Wrapper/a>/td> td>a hrefhttps://github.com/benjhar target_blank>benjhar/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/rust-icon>/td> td>Rust/td> td>a hrefhttps://github.com/canarado/sv443_jokeapi_wrapper#readme target_blank>Sv443_JokeAPI Rust Crate/a>/td> td>a hrefhttps://github.com/canarado target_blank>canarado/a>/td> /tr> tr> td classwrappericon>img classminiimg srcstatic/typescript-icon>/td> td>TypeScript/td> td>a hrefhttps://github.com/bitstep-ie/jokeapi#readme target_blank>TS wrapper for Sv443s JokeAPI/a>/td> td>a hrefhttps://github.com/bitstep-ie target_blank>bitstep-ie/a>/td> /tr> /table> br> a classsmallText href#other-attributions>(Click here to see the icon attributions)/a> !-- #MARKER Submit Joke --> div classdocHeader targetBlink idsubmit>a classheaderAnchorContainer href#submit titleClick to link to this header>🔗/a>span classdocHeaderText>Submit a Joke:/span>/div> div> Joke submissions have been disabled for the forseeable future.br> Please see a hrefhttps://github.com/Sv443-Network/JokeAPI/issues/489 target_blank>this GitHub issue/a> for more info. /div> div idsubmissions-hidden>div idsubmitContainer classhighlightedContainer> div classsubmitFlexItem> table idpropertyTable> tr> td>Category:/td> td> select idf_category> option valueMisc classselectOnInit selected>Misc/option> option valueProgramming>Programming/option> option valueDark>Dark/option> option valuePun>Pun/option> option valueSpooky>Spooky/option> option valueChristmas>Christmas/option> /select> /td> /tr> tr> td>Type:/td> td> select idf_type> option valuesingle classselectOnInit selected>Single/option> option valuetwopart>Two Part/option> /select> /td> /tr> tr> td>Language:/td> td> select idf_language classappendLangOpts>/select> span idf_langHideContainer classhidden> input typetext idf_customLang placeholderLanguage Code minlength2 maxlength2 onchangevalChanged(this) valueen> a hrefhttps://v2.jokeapi.dev/languages?formattxt target_blank titleClick to view all possible ISO 639-1 language code values>(?)/a> /span> /td> /tr> tr> td>Flags:/td> td> input typecheckbox classuncheckOnInit idf_flags_nsfw valuensfw>label forf_flags_nsfw>NSFW/label> input typecheckbox classuncheckOnInit idf_flags_religious valuereligious>label forf_flags_religious>Religious/label> input typecheckbox classuncheckOnInit idf_flags_political valuepolitical>label forf_flags_political>Political/label> wbr> input typecheckbox classuncheckOnInit idf_flags_racist valueracist>label forf_flags_racist>Racist/label> input typecheckbox classuncheckOnInit idf_flags_sexist valuesexist>label forf_flags_sexist>Sexist/label> input typecheckbox classuncheckOnInit idf_flags_explicit valueexplicit>label forf_flags_explicit>Explicit/label> /td> /tr> tr> td>Joke:/td> td> textarea classclearOnInit idf_setup placeholderJoke>/textarea>br> textarea classclearOnInit idf_delivery placeholderDelivery styledisplay: none;>/textarea> /td> /tr> /table> br> div classcentered> button idsubmitBtn>Submit >/button> /div> /div> div classsubmitFlexItem l>code idsubmissionCodeElement classprettyprint>span classnocode codeheader>Payload Preview:/span>div classactualCode idsubmissionDisplay>/div>/code> /div> /div> Note: Only Unicode characters in the range U+0000 to U+0FFF are allowed a hrefhttps://unicode-table.com/en target_blank>(more info)/a> /div> !-- #MARKER Rate Limiting section--> div classdocHeader targetBlink idrate-limiting>a classheaderAnchorContainer href#rate-limiting titleClick to link to this header>🔗/a>span classdocHeaderText>Rate Limiting:/span>/div> Due to JokeAPI being target of DoS attacks in the past, every client has a request budget of 120 requests they can send per minute.br> Sending any requests after this limit will make the API temporarily give you a HTTP 429 error until the time runs out.br> When submitting jokes, your budget is only 5 requests per minute.br> br> Almost everywhere when using JokeAPI, you will be getting the following headers which tell you all you need to know about your current request budget: br> table idrateLimitingTable classalternatingBgTable> tr> th>Name/th> th>Description/th> /tr> tr> td>Retry-After/td> td>Tells you in how many seconds your request budget gets reset back to 120/td> /tr> tr> td>RateLimit-Limit/td> td>How many requests in total you can send to JokeAPI per minute/td> /tr> tr> td>RateLimit-Remaining/td> td>How many requests you have left in your budget/td> /tr> tr> td>RateLimit-Reset/td> td>Contains an a hrefhttps://tools.ietf.org/html/rfc7231#section-7.1.1.1 target_blank>IMF-fixdate/a> timestamp of when your request budget gets reset back to 120/td> /tr> /table> !-- #MARKER URL parameters --> div classdocHeader targetBlink idurl-parameters>a classheaderAnchorContainer href#url-parameters titleClick to link to this header>🔗/a>span classdocHeaderText>URL Parameters:/span>/div> URL parameters are like the settings or the configuration of an HTTP request.br> The parameters need to be prefixed by a single question mark (?) and separate key/value pairs need to be delimited from another by an ampersand (&). Keys are separated from values with an equals sign ().br> Example: mark>https://example.org/some/pagespan classcolB>?/span>span classcolY>key1foo/span>span classcolB>&/span>span classcolY>key2bar/span>span classcolB>&/span>span classcolY>key3baz/span> .../mark> (yellow key/value pair)br> !--#SECTION Format--> div classsubHeaderContainer>a href#format-param titleClick to link to this header>§/a> span classsubHeader idformat-param>Format:/span>/div> mark>?formatformat/mark>br>br> This parameter is global - it can be used on every single endpoint of JokeAPI (excluding the documentation and static content).br> It is used to change the response format from the default (JSON) to span classinsFormatsS>(Loading...)/span>, depending on what you need.br> If the format parameter is invalid or not specified at all, the default value of JSON will be used.br> Available formats are mark classinsFormats>(Loading...)/mark>br>br> details>summary>Example 1 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?formatxml/mark>br>br> !-- Code blocks need to be at indentation level 0: -->code classprettyprint>div classactualCode><data> <category>Programming</category> <type>single</type> <joke>// This line doesnt actually do anything, but the code stops working when I delete it.</joke> <flags> <nsfw>false</nsfw> <religious>false</religious> <political>false</political> <racist>false</racist> <sexist>false</sexist> <explicit>false</explicit> </flags> <id>12</id> <lang>en</lang></data>/div>/code> /details>br> details>summary>Example 2 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?formattxt/mark>br>br>code>div classactualCode>How many programmers does it take to screw in a light bulb?None. Its a hardware problem./div>/code> /details> br>br>!--#SECTION Blacklist Flags--> div classsubHeaderContainer>a href#flags-param titleClick to link to this header>§/a> span classsubHeader idflags-param>Blacklist Flags:/span>/div> mark>?blacklistFlagsflag1,flag2,.../mark>br>br> This parameter can only be used on the joke endpoint.br> If it is used, jokes that match the specified flag(s) will not be served (a href#blacklist-flags>what is a flag?/a>).br> If you want to use multiple flags, separate them with a comma (,) or a plus sign (+).br> These are all the available flags: mark classinsFlags>(Loading...)/mark>br>br> details>summary>Example 1 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?blacklistFlagsnsfw/mark>br> Using the above URL makes sure you dont get any jokes that are not safe for work. /details>br> details>summary>Example 2 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?blacklistFlagsnsfw,racist,sexist,explicit/mark>br> Using the above URL makes sure you dont get any jokes that are not safe for work, racist and sexist and that doesnt contain explicit language (swear words, etc.). /details> br>br>!--#SECTION Language--> div classsubHeaderContainer>a href#lang titleClick to link to this header>§/a> span classsubHeader idlang>Language:/span>/div> mark>?langlangcode/mark>br>br> This parameter can be used on every endpoint, but it is possible that no translations or jokes exist yet for your language.br> br> There are two types of languages; system languages and joke languages. Both are separate from each other.br> All system messages like errors can have a certain system language, while jokes can only have a joke language.br> It is possible, that system languages dont yet exist for your language while jokes already do.br> If no suitable system language is found, JokeAPI will default to English.br> The language codes in JokeAPI follow the a hrefhttps://en.wikipedia.org/wiki/List_of_ISO_639-1_codes target_blank>ISO 639-1/a> / Alpha-2 specification.br> br> If you are interested in providing translations, please read the a hrefhttps://github.com/Sv443-Network/JokeAPI/blob/master/.github/Contributing.md#submitting-translations target_blank>Contributing Guide/a>; it will explain it.br> You can also submit jokes in different languages. Please understand that I will not be able to ensure their proper formatting or legitimacy.br> br> Currently available system languages: mark classinsSysLangs>(Loading...)/mark>br> Currently available joke languages: mark classinsJokeLangs>(Loading...)/mark>br>br> details>summary>Example 1 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?langru/mark>br> Using the above URL will fetch only jokes that are Russian. If an error gets returned, it will also be in Russian, provided a translation was found. /details>br> br>br>!--#SECTION Joke Type--> div classsubHeaderContainer>a href#type-param titleClick to link to this header>§/a> span classsubHeader idtype-param>Joke Type:/span>/div> mark>?typetype/mark>br>br> This parameter can only be used on the joke endpoint.br> If it is set, you will only receive jokes with the specified joke type (a href#joke-type>what is a joke type?/a>).br> If it is not set or set to an invalid value, you will receive jokes of both types.br> Available types are: mark>single, twopart/mark>br>br> details>summary>Example (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?typetwopart/mark>br>br>code classprettyprint>div classactualCode>{ category: Programming, type: twopart, setup: What is a dying programmers last program?, delivery: Goodbye, world!, flags: { nsfw: false, religious: false, political: false, racist: false, sexist: false, explicit: false }, id: 58, lang: en}/div>/code>br> (no jokes with type single will be served) /details> br>br>!--#SECTION Contains--> div classsubHeaderContainer>a href#contains-param titleClick to link to this header>§/a> span classsubHeader idcontains-param>Contains:/span>/div> mark>?containsstring/mark>br>br> This parameter can only be used on the joke endpoint.br> If this parameter is specified, only jokes that contain the value of this parameter will be served (case insensitive).br> span classcolY>IMPORTANT:/span> If the value of this parameter contains special characters, it needs to be a hrefhttps://en.wikipedia.org/wiki/Percent-encoding target_blank>percent-encoded/a> according to the a hrefhttps://tools.ietf.org/html/rfc3986#section-2.1 target_blank>URI syntax standard/a>, otherwise you might get an error or a wrong response.br>br> details>summary>Example (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?containsC%23/mark> (%23 pound character / hashtag / # - so the thing searched for here is C#)br>br>code classprettyprint>div classactualCode>{ category: Programming, type: twopart, setup: Why do programmers wear glasses?, delivery: Because they need to C#, flags: { nsfw: false, religious: false, political: false, racist: false, sexist: false, explicit: false }, id: 51, lang: en}/div>/code>br> /details> br>br>!--#SECTION ID Range--> div classsubHeaderContainer>a href#idrange-param titleClick to link to this header>§/a> span classsubHeader ididrange-param>ID Range:/span>/div> mark>?idRangenumber-number/mark>br>br> This parameter can only be used on the joke endpoint.br> If it is used, you will only get jokes that are inside the specified range of IDs.br> The lower and upper boundary of the ID range needs to be delimited with a minus (-), comma (,) or a plus sign (+).br> If you only want to get a single joke by its ID, you can also ignore the delimiter and just use the single ID as the value for this parameter.br> As there are currently 1368 jokes, the ID range can be any range from mark>0 - 1367/mark>br>br> details>summary>Example 1 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?idRange0-55/mark>br> Using the above URL will make JokeAPI only serve you jokes that are inside the ID range of 0 to 55. /details>br> details>summary>Example 2 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?idRange33/mark>br> Using the above URL will make JokeAPI only serve you the joke with the ID 33 (provided there are no other filters that are blacklisting that joke). /details> br>br>!--#SECTION Joke Amount--> div classsubHeaderContainer>a href#amount-param titleClick to link to this header>§/a> span classsubHeader idamount-param>Joke Amount:/span>/div> mark>?amountnumber/mark>br>br> This parameter can only be used on the joke endpoint.br> If it is used, you will get a certain number of jokes in a single request.br> If JokeAPI has less jokes than demanded, it will not error out but instead send the maximum amount of jokes it can serve.br> Maximum possible number is 10 and using an invalid value will make JokeAPI default to 1.br> The joke format will change from the default when you set the amount parameter to 2 or more.br> br> details>summary>Click to view the format when fetching multiple jokes/summary>code classprettyprint lang-json>div classactualCode>{ error: false, jokes: { category: Misc, type: single, ... }, ... , amount: 10}/div>/code>br> /details> br> details>summary>Example (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?amount5/mark>br> Using the above URL will make JokeAPI serve you five jokes at once. /details>br> br>br>!--#SECTION Dry Run--> div classsubHeaderContainer>a href#dryrun-param titleClick to link to this header>§/a> span classsubHeader iddryrun-param>Submission Dry Run:/span>/div> mark>?dry-run/mark>br>br> This parameter can only be used on the submit endpoint. It doesnt need a value (part to the right of the equals character).br> br> If present, JokeAPI will respond just like the usual submit endpoint except the joke isnt actually saved to the API.br> This functionality can be used to check if a joke is valid / what is wrong with it.br> br> A successful dry run will have its mark>error/mark> property set to false.br> It will also have a mark>message/mark> property with a short status message and a mark>timestamp/mark> property with a 13-character UNIX timestamp.br> !-- #MARKER Safe Mode --> div classdocHeader targetBlink idsafe-mode>a classheaderAnchorContainer href#safe-mode titleClick to link to this header>🔗/a>span classdocHeaderText>Safe Mode:/span>/div> Safe Mode was added in version 2.3.0. If enabled, JokeAPI will try its best to serve only jokes that are considered safe for everyone.br> Unsafe jokes are those who can be considered explicit in any way, either through the used language, its references or its a href#blacklist-flags>blacklist flags./a>br> Jokes from the category mark>Dark/mark> are also generally marked as unsafe.br> br> Note: this filter is really fine but that doesnt mean human error is out of the question.br> If you find any jokes that you consider unsafe but are served even when safe mode is activated, please a hrefhttps://github.com/Sv443-Network/JokeAPI/issues/new/choose target_blank>submit an issue here./a>br> br> The Safe Mode can be enabled by adding the value-less URL parameter mark>safe-mode/mark> to the URL.br> br> details>summary>Example 1 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Any?safe-mode/mark>br> Using the above URL will make sure you wont get any unsafe jokes. /details> br> details>summary>Example 2 (click to view)/summary> URL: mark>https://v2.jokeapi.dev/joke/Misc,Programming?formatxml&safe-mode&typesingle/mark>br> This URL will yield a safe joke from the Misc or Programming category in the file format XML thats also of type single. /details>br> !-- #MARKER Errors --> div classdocHeader targetBlink iderrors>a classheaderAnchorContainer href#errors titleClick to link to this header>🔗/a>span classdocHeaderText>Errors:/span>/div> In JokeAPI all response data, no matter from which endpoint will have a boolean error parameter.br> Usually, it is set to false, which means there was no error in your request or on the server.br> If the error parameter is set to true though, there was an error and JokeAPI will add an internalError, message, causedBy, additionalInfo and timestamp parameter.br> br> The internalError parameter will be set to false, if the error was due to a malformed or failed request and it will be true, if the error is JokeAPIs fault.br> The message parameter will contain a short version of the error message and the timestamp parameter will contain a 13-character Unix timestamp.br> The causedBy parameter is an array of possible causes of this error and the addidionalInfo parameter contains a more descriptive error message.br> br> If possible, JokeAPI will try to translate the error messages but keep in mind there might not exist a translation for your language yet or it is not 100% perfect.br> You can view an example of an error, where an invalid category was used, just below this paragraph.br> Together with the a href#status-codes>HTTP status code/a>, which will also be set according to the type of error, these parameters can be used to improve error handling massively from what was the error system in previous versions of JokeAPI.br>br>br>code classprettyprint>span classnocode codeheader>Example Error:/span> div classactualCode>{ error: true, internalError: false, code: 106, message: No matching joke found, causedBy: No jokes were found that match your provided filter(s) , additionalInfo: The specified category is invalid - Got: \foo\ - Possible categories are: \Any, Misc, Programming, Dark, Pun, Spooky, Christmas\ (case insensitive), timestamp: 1579170794412}/div>/code>br> div classsubHeaderContainer>a href#status-codes titleClick to link to this header>§/a> span classsubHeader idstatus-codes>Status Codes:/span>/div> table idstatusCodeTable classalternatingBgTable> !-- Use CSS classes g (green), r (red) and dr (dark red) on the tds to color status codes --> tr> th>Code/th> th>Name/th> th>Description/th> /tr> tr> td classg>200/td> td>Ok/td> td>The request was accepted and processed successfully and the response text contains the requested data or a status message/td> /tr> tr> td classg>201/td> td>Created/td> td>The joke submission is formatted correctly and was accepted and successfully saved (unless a href#dryrun-param>?dry-run/a> was used)/td> /tr> tr> td classr>400/td> td>Bad Request/td> td>The request you have sent to JokeAPI is formatted incorrectly and cannot be processed/td> /tr> tr> td classr>403/td> td>Forbidden/td> td>You have been added to the blacklist due to malicious behavior and are not allowed to send requests to JokeAPI anymore/td> /tr> tr> td classr>404/td> td>Not Found/td> td>The URL you have requested couldnt be found/td> /tr> tr> td classr>413/td> td>Payload Too Large/td> td>The payload data sent to the server exceeds the maximum size of 5120 bytes/td> /tr> tr> td classr>414/td> td>URI Too Long/td> td>The URL exceeds the maximum length of 250 characters/td> /tr> tr> td classr>429/td> td>Too Many Requests/td> td>You have exceeded the limit of 120 requests per minute and have to wait a bit until you are allowed to send requests again/td> /tr> tr> td classdr>500/td> td>Internal Server Error/td> td>There was a general internal error within JokeAPI. You can get more info from the properties in the response text/td> /tr> tr> td classdr>523/td> td>Origin Unreachable/td> td>My server is temporarily offline due to maintenance or an outage. Please be patient and check the a hrefhttps://status.sv443.net/ target_blank>status page./a>/td> /tr> /table> br> mark> span classcol g>Success/span> • span classcol r>Client Error/span> • span classcol dr>Server Error/span> /mark> !-- #MARKER Troubleshooting --> div classdocHeader targetBlink idtroubleshooting>a classheaderAnchorContainer href#troubleshooting titleClick to link to this header>🔗/a>span classdocHeaderText>Troubleshooting:/span>/div> span classsubHeader>HTTP Error 403:/span> First, please check if you can access all endpoints with your web browser. If not, your IP address has most likely been acting malicious and was permanently blacklisted.br> If you keep getting HTTP 403 (Forbidden) response codes in your program but not in your browser and have never shown malicious behavior before, the issue is most likely that Cloudflare is blocking your request.br> This might be due to inconsistent request data or headers that are often used in malicious requests or cyber attacks (most of the time its gonna be the fault of the library you are using).br> A fix to this issue would be to explicitly set a mark>User-Agent/mark> header in each of your requests.br> This is the user agent of your browser which you should be able to use in the fix described above:br> mark idinsUserAgent>(Something didnt work, please enter navigator.userAgent without quotes in your JavaScript console instead)/mark>br>br> span classsubHeader>HTTP Error 429:/span> You will get 429 errors occasionally if you exceed the maximum of 120 requests per minute.br> In this case, you will need to wait up to one minute to be able to talk to the API again.br> If you want to index the API or fetch all jokes, are better off going to the a hrefhttps://github.com/Sv443-Network/JokeAPI target_blank>GitHub repository/a>, where you will find everything you need and you dont need to spam JokeAPI. !-- #MARKER Endpoints --> div classdocHeader targetBlink idendpoints>a classheaderAnchorContainer href#endpoints titleClick to link to this header>🔗/a>span classdocHeaderText>Endpoints:/span>/div> An endpoint is an access point to send the HTTP requests to and get your response.br> JokeAPI offers these following endpoints:br>br> !--#SECTION Get Joke--> div classsubHeaderContainer>a href#joke-endpoint titleClick to link to this header>§/a> span idjoke-endpoint classsubHeader>Get Joke:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/joke/span classplaceholder>Category/-ies/span>/span> /span> br>br> This endpoint is the one you want to call to get a joke.br> A valid a href#categories>joke category/a> or multiple joke categories, delimited with a comma, plus or minus character (, + -) must be provided in the URL.br> These are all the available categories: mark classinsCategories>(Loading...)/mark>br> To see how this URL is built with certain parameters set, a href#try-it>visit the Try It section./a>br> details> summary>Full example - click to view/summary> span classrequestURLwrapper> span classrequestURL>https://v2.jokeapi.dev/joke/Programming,Misc?formatxml&blacklistFlagsnsfw,sexist&typesingle&langru&amount2/span> /span>br>br> Will give two Russian joke from either the Programming or the Misc category, with the payload a href#response-formats>format/a> XML,br> with the a href#joke-type>joke type/a> single, while also preventing all jokes that are potentially not safe for work and sexist from being served. /details> br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#flags-param>?blacklistFlags/a>/li> li>a classrequestURL href#lang>?lang/a>/li> li>a classrequestURL href#id-range>?idRange/a>/li> li>a classrequestURL href#search-string>?contains/a>/li> li>a classrequestURL href#joke-type>?type/a>/li> li>a classrequestURL href#amount>?amount/a>/li> /ul> a href#url-parameters>(More info on filtering parameters)/a> br>br> !--#SECTION Info--> div classsubHeaderContainer>a href#info-endpoint titleClick to link to this header>§/a> span idinfo-endpoint classsubHeader>Info:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/info/span> /span> br>br> This endpoint provides a lot of information about JokeAPI and its jokes:br> - The version numberbr> - The amount of jokesbr> - All the available categories, flags, types and formatsbr> - A 13-character UNIX timestampbr> - The URL to a joke submission formbr> - A list of languages (code and name) JokeAPI currently supportsbr> - The minimum and maximum values of an ID range per each languagebr> - The amount of safe jokes there are per languagebr> - A string with some information, like a message of the day br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION Categories--> div classsubHeaderContainer>a href#categories-endpoint titleClick to link to this header>§/a> span idcategories-endpoint classsubHeader>Categories:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/categories/span> /span> br>br> This endpoint returns a list / an array of all available a href#categories>joke categories/a>, all available a href#category-aliases>category aliases/a> and a 13-character UNIX timestamp. br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION LangCode--> div classsubHeaderContainer>a href#langcodes-endpoint titleClick to link to this header>§/a> span idlangcode-endpoint classsubHeader>Language Code:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/langcode/span classplaceholder>Language/span>/span> /span> br>br> This endpoint returns the ISO 639-1 language code of a provided language. It is searched with a fuzzy search, so you just have to provide the approximate language name.br> The resulting language code is to be used in a href#joke-endpoint>fetching/a> and a href#submit-endpoint>submitting/a> jokes in different languages.br> br> details> summary>Example 1 - click to view/summary> br> span classrequestURLwrapper> span classrequestURL>https://v2.jokeapi.dev/langcode/german/span> /span>br>br>code classprettyprint>div classactualCode>{ error: false, code: de}/div>/code> /details> br> details> summary>Example 2 - click to view/summary> br> span classrequestURLwrapper> span classrequestURL>https://v2.jokeapi.dev/langcode/sw3d1sh/span> /span>br>br>code classprettyprint>div classactualCode>{ error: false, code: sv}/div>/code> /details> br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION Languages--> div classsubHeaderContainer>a href#languages-endpoint titleClick to link to this header>§/a> span idlanguages-endpoint classsubHeader>Supported Languages:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/languages/span> /span> br>br> This endpoint returns lists of supported languages in jokes and supported languages in system messages (error messages).br> Also, it returns a list of possible ISO 639-1 language codes you can use to submit a joke or add a translation.br> details> summary>Example - click to view/summary> br> span classrequestURLwrapper> span classrequestURL>https://v2.jokeapi.dev/languages/span> /span>br>br>code classprettyprint>div classactualCode>{ defaultLanguage: en, jokeLanguages: de, en , systemLanguages: de, en, ru , possibleLanguages: { code: aa, name: Afar }, { ... }, ... , timestamp: 1590929517702}/div>/code> /details> br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION Flags--> div classsubHeaderContainer>a href#flags-endpoint titleClick to link to this header>§/a> span idflags-endpoint classsubHeader>Flags:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/flags/span> /span> br>br> This endpoint returns a list / an array of all available a href#blacklist-flags>blacklist flags/a> and a 13-character UNIX timestamp. br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION Formats--> div classsubHeaderContainer>a href#formats-endpoint titleClick to link to this header>§/a> span idformats-endpoint classsubHeader>Formats:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/formats/span> /span> br>br> This endpoint returns a list / an array of all available a href#response-formats>response formats/a> and a 13-character UNIX timestamp. br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION Ping--> div classsubHeaderContainer>a href#ping-endpoint titleClick to link to this header>§/a> span idping-endpoint classsubHeader>Ping:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/ping/span> /span> br>br> This endpoint returns a parameter named ping that contains the word Pong! and a 13-character UNIX timestamp.br> It is intended for external uptime monitoring but you can also use it if you want to. br>br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> li>a classrequestURL href#lang>?lang/a>/li> /ul> br>br> !--#SECTION Endpoints--> div classsubHeaderContainer>a href#endpoints-endpoint titleClick to link to this header>§/a> span idendpoints-endpoint classsubHeader>Endpoints:/span>/div> span classrequestURLwrapper> span classrequestMethodGET>GET/span> span classrequestURL>https://v2.jokeapi.dev/endpoints/span> /span> br> br> This endpoint returns a list / an array of all available endpoints, their usage (method, url and supported parameters) and a short description each.br> Note: the mark>lang/mark> parameter will not work here.br> br> Supported URL parameters:br> ul> li>a classrequestURL href#response-formats>?format/a>/li> /ul> br>br> !--#SECTION Submit--> div classsubHeaderContainer>a href#submit-endpoint titleClick to link to this header>§/a> span idsubmit-endpoint classsubHeader>Submit Joke:/span>/div> span classrequestURLwrapper> span classrequestMethodPUT>POST/span> span classrequestURL>https://v2.jokeapi.dev/submit/span> /span> br>br> This endpoint is used to programatically submit a joke to be reviewed and added to JokeAPIs official jokes.br> If you instead just want to manually submit a joke, please a href#submit>click here./a>br>br> To ensure backwards compatibility you can use the mark>PUT/mark> method even though it is discouraged.br> Using the mark>PUT/mark> method might be deprecated in the future.br>br> The payload needs to be sent as JSON. Different a href#response-formats>formats/a> are not allowed here.br> The request payload has to follow the same object structure that the jokes are served in when using the joke endpoint.br> br> Make sure to add a formatVersion property, though, which just contains the current joke format version (3).br> This is needed since there were a few changes to the object format since the previous versions and this serves as a kind of acknowledgement.br> br> The joke category has to be any valid a href#categories>category/a>, excluding Any.br> If the a href#joke-type>joke type/a> is set to single, the properties setup and delivery will need to be omitted and the joke is to be put in the joke property.br> If the a href#joke-type>joke type/a> is set to twopart, the joke property is to be replaced with the properties setup and delivery.br> The a href#blacklist-flags>flags/a> property needs to be an object that contains the boolean properties nsfw, religious, political, racist, sexist and explicit. These need to be set accordingly.br> The joke ID doesnt need to be provided as it will be automatically assigned to the joke.br> br> This endpoint has a unique URL parameter; a href#dryrun-param>?dry-run/a>, which if present will make the API respond just like the usual submit endpoint except the joke isnt actually saved to the API.br> This functionality can be used to check if a joke is valid / what is wrong with it without having the joke actually submitted to the API.br> br> If the joke is valid and the server accepted the submission, you will get a response with the a hrefhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201 target_blank>status code 201./a>br> br>code classprettyprint>span classnocode codeheader>Example Payload:/span>div classactualCode>{ formatVersion: 3, category: Misc, type: single, joke: A horse walks into a bar..., flags: { nsfw: true, religious: false, political: true, racist: false, sexist: false, explicit: false }, lang: en}/div>/code> br> Supported URL parameters:br> ul> li>a classrequestURL href#dryrun-param>?dry-run/a>/li> /ul> br>br> details>summary>Click here to see how the server responds to a joke submission/summary>code classprettyprint>span classnocode codeheader>Server Response:/span>div classactualCode>{ error: false, message: Joke submission was successfully saved. It will soon be checked out by the author., submission: { formatVersion: 2, category: Misc, type: single, joke: A horse walks into a bar..., flags: { nsfw: true, religious: false, political: true, racist: false, sexist: false, explicit: false }, lang: en }, timestamp: 1579685839560}/div>/code> /details> br>br> details>summary>Click here to see how the server responds to a submission dry run/summary>code classprettyprint>span classnocode codeheader>Server Response:/span>div classactualCode>{ error: false, message: Dry Run complete! No errors were found., timestamp: 1604627398681}/div>/code> /details> br>br>br> !-- #MARKER Filtering --> div classdocHeader targetBlink idfiltering>a classheaderAnchorContainer href#filtering titleClick to link to this header>🔗/a>span classdocHeaderText>Filtering Jokes:/span>/div> I created JokeAPI with the main purpose of it having many versatile filtering options as other APIs didnt offer this amount of customization.br> In this section you will learn how the filtering works.br>br> There are six different filtering methods in JokeAPI:br> ul> li>a href#categories>Joke Category/a>/li> li>a href#blacklist-flags>Blacklist Flags/a>/li> li>a href#response-formats>Response Format/a>/li> li>a href#joke-type>Joke Type/a>/li> li>a href#search-string>Search String/a>/li> li>a href#id-range>ID Range/a>/li> li>a href#lang>Language/a>/li> /ul> !-- #MARKER API Tokens --> div classdocHeader targetBlink idapi-tokens>a classheaderAnchorContainer href#api-tokens titleClick to link to this header>🔗/a>span classdocHeaderText>API Tokens:/span>/div> JokeAPI has a way of whitelisting certain clients. This is achieved through an API token.br> At the moment, you will only receive one of these tokens temporarily if something breaks or if you are a business and need more than 120 requests per minute.br> If you do end up receiving a token, using it is as easy as adding an mark>Authorization/mark> header with the actual token as its value.br> You will receive a response header called mark>Token-Valid/mark> which will contain the number 1 if the token is valid.br> If the token is invalid, the Token-Valid header will be set to 0 and JokeAPI will treat your request as if you didnt supply a token in the first place. !-- #MARKER Examples --> div classdocHeader targetBlink idexamples>a classheaderAnchorContainer href#examples titleClick to link to this header>🔗/a>span classdocHeaderText>Examples:/span>/div> These are some examples in some commonly used languages to show you how you could implement JokeAPI:br>br> !--#SECTION Node--> details>summary idexample-node classbig>Node.js (click to show)/summary>code classprettyprint>span classnocode codeheader>Node.js:/span>div classactualCode>const https require(https); // Native module, no need to explicitly installconst baseURL https://v2.jokeapi.dev;const categories Programming, Misc, Pun, Spooky, Christmas;const params blacklistFlagsnsfw,religious,racist, idRange0-100;https.get(`${baseURL}/joke/${categories.join(,)}?${params.join(&)}`, res > { console.log(\n); res.on(data, chunk > { // On data received, convert it to a JSON object let randomJoke JSON.parse(chunk.toString()); if(randomJoke.type single) { // If type single, the joke only has the joke property console.log(randomJoke.joke); console.log(\n); } else { // If type twopart, the joke has the setup and delivery properties console.log(randomJoke.setup); setTimeout(() > { console.log(randomJoke.delivery); console.log(\n); }, 3000); } }); res.on(error, err > { // On error, log to console console.error(`Error: ${err}`); });});/div>/code> /details>br> !--#SECTION Web-JS--> details>summary idexample-js classbig>Web-JavaScript (click to show)/summary>code classprettyprint>span classnocode codeheader>Web-JS:/span>div classactualCode>var baseURL https://v2.jokeapi.dev;var categories Programming, Misc, Pun, Spooky, Christmas;var params blacklistFlagsnsfw,religious,racist, idRange0-100;var xhr new XMLHttpRequest();xhr.open(GET, baseURL + /joke/ + categories.join(,) + ? + params.join(&));xhr.onreadystatechange function() { if(xhr.readyState 4 && xhr.status 300) // readyState 4 means request has finished + we only want to parse the joke if the request was successful (status code lower than 300) { var randomJoke JSON.parse(xhr.responseText); if(randomJoke.type single) { // If type single, the joke only has the joke property alert(randomJoke.joke); } else { // If type single, the joke only has the joke property alert(randomJoke.setup); alert(randomJoke.delivery); } } else if(xhr.readyState 4) { alert(Error while requesting joke.\n\nStatus code: + xhr.status + \nServer response: + xhr.responseText); }};xhr.send();/div>/code> /details>br> !--#SECTION C#--> details>summary idexample-cs classbig>C# (click to show)/summary> code classprettyprint>span classnocode codeheader>C#:/span> div classactualCode>using System;using System.Threading.Tasks;using System.Net.Http;namespace JokeAPIExample{ class Program { static async Task Main(string args) { string joke await GetJoke(); Console.WriteLine(Joke + joke); } public async static Taskstring> GetJoke() { var client new HttpClient(); var response await client.GetAsync(https://jokeapi.dev/joke/Any?formattxt&typesingle&blacklistFlagsnsfw,racist,sexist&langen); var joke await response.Content.ReadAsStringAsync(); return joke; } }}/div>/code> /details>br> details>summary idexample-cs classbig>C# - Advanced (click to show)/summary>code classprettyprint>span classnocode codeheader>C#:/span>div classactualCode>using System;using System.Threading.Tasks;using System.Net.Http;using Newtonsoft.Json; // install with NuGetnamespace TestHttpRequest{ class Program { static async Task Main(string args) { Console.Write(\n); Joke randomJoke await GetJoke(); if (randomJoke.type single) { Console.WriteLine(randomJoke.joke); } else { Console.WriteLine(randomJoke.setup); Console.WriteLine(...); System.Threading.Thread.Sleep(3000); Console.WriteLine(randomJoke.delivery); } Console.Write(\n); } public async static TaskJoke> GetJoke() { const string baseUrl https://v2.jokeapi.dev; string categories { Programming, Miscellaneous, Pun }; string parameters { blacklistFlagsnsfw,religious,racist,sexist, idRange0-100, safe-mode, langen }; string requestUrl ${baseUrl}/joke/{string.Join(,, categories)}?{string.Join(&, parameters)}; Joke randomJoke; using (var httpClient new HttpClient()) { var json await httpClient.GetStringAsync(requestUrl); randomJoke JsonConvert.DeserializeObjectJoke>(json); } return randomJoke; } } public class Joke { public string type { get; set; } public string joke { get; set; } public string setup { get; set; } public string delivery { get; set; } public Flags flags { get; set; } public int id { get; set; } public bool safe { get; set; } public string lang { get; set; } } public class Flags { public bool nsfw { get; set; } public bool religious { get; set; } public bool political { get; set; } public bool racist { get; set; } public bool sexist { get; set; } public bool @explicit { get; set; } // use @ since explicit is a reserved keyword }}/div>/code> /details>br> !-- #MARKER Terminology --> div classdocHeader targetBlink idterminology>a classheaderAnchorContainer href#terminology titleClick to link to this header>🔗/a>span classdocHeaderText>Terminology:/span>/div> You might come across some terms in this documentation you dont understand. This section teaches you what those terms mean.br> !--#SECTION Categories--> div classsubHeaderContainer>a href#categories titleClick to link to this header>§/a> span classsubHeader idcategories>Categories:/span>/div> JokeAPI has a first, coarse filter that just categorizes the jokes depending on what the joke is about or who the joke is directed at.br> A joke about programming will be in the Programming category, dark humor will be in the Dark category and so on.br> If you want jokes from all categories, you can instead use Any, which will make JokeAPI randomly choose a category.br> Since version 2.3.0, there are now aliases to these categories. a href#category-aliases>This section/a> explains how they work.br>br> These are all the available categories: mark classinsCategories>(Loading...)/mark>br> To set the category you want, you need to add it to the URL path, just after the /joke endpoint, like this: mark>https://v2.jokeapi.dev/joke/Programming/mark> br> div classsubHeaderContainer>a href#category-aliases titleClick to link to this header>§/a> span classsubHeader idcategory-aliases>Category Aliases:/span>/div> Since version 2.3.0, there are now category aliases. You can use these as a shorter or just different version of the normal set of a href#categories>categories./a>br> Internally, these aliases will be resolved to one of the normal set of a href#categories>categories/a> and your request (including the APIs response) will be treated as if you used the resolved value.br> br> The following is a list of aliases and what they will be resolved to internally:br> table idcatAliasesContainer classalternatingBgTable> tr> th>Alias/th> th>Resolved Category/th> /tr> /table> br> details> summary>Example - click to view/summary> The following URL will make JokeAPI resolve the alias mark>Coding/mark>, giving you a joke from the category mark>Programming/mark>: br> span classrequestURLwrapper> span classrequestURL>https://v2.jokeapi.dev/joke/Coding/span> /span> /details>br> !--#SECTION Flags--> div classsubHeaderContainer>a href#blacklist-flags titleClick to link to this header>§/a> span classsubHeader idblacklist-flags>(Blacklist-) Flags:/span>/div> Blacklist Flags (or just Flags) are a more fine layer of filtering.br> Multiple flags can be set on each joke and they tell you something about the offensiveness of each joke.br> You can tell JokeAPI to not give you jokes that have the specified flags by using the a href#flags-param>?blacklistFlags/a> URL parameter.br>br> These are all the available flags: mark classinsFlags>(Loading...)/mark>br> !--#SECTION Formats--> div classsubHeaderContainer>a href#response-formats titleClick to link to this header>§/a> span classsubHeader idresponse-formats>(Response-) Formats:/span>/div> Response Formats (or just Formats) are a way to get your data in a different file format.br> Maybe your environment or language doesnt support JSON natively. In that case, JokeAPI is able to convert the JSON-formatted joke to a different format for you.br> You can tell JokeAPI which file format to respond with by using the a href#format-param>?format/a> URL parameter.br>br> These are all the available formats: mark classinsFormats>(Loading...)/mark>br> !--#SECTION Type--> div classsubHeaderContainer>a href#joke-type titleClick to link to this header>§/a> span classsubHeader idjoke-type>Joke Type:/span>/div> Each joke comes with one of two types: single or twopart.br> If a joke is of type twopart, it has a setup string and a delivery string, which are both part of the joke.br> They are separated because you might want to present the users the delivery after a timeout or in a different section of the UI.br> A joke of type single only has a single string, which is the entire joke.br> If you only want one type of joke, you can use the a href#type-param>?type/a> URL parameter.br>br> These are the available types: mark>single, twopart/mark>br> !--#SECTION Search String--> div classsubHeaderContainer>a href#search-string titleClick to link to this header>§/a> span classsubHeader idsearch-string>Search String:/span>/div> If the search string filter is used, only jokes that contain the specified string will be returned.br> You can specify this search string by using the a href#contains-param>?contains/a> URL parameter.br> span classcolY>IMPORTANT:/span> If the value of this parameter contains special characters, it needs to be a hrefhttps://tools.ietf.org/html/rfc3986#section-2.1 target_blank>percent-encoded/a> according to the URI standard (a hrefhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent target_blank>MDN Reference/a>), otherwise you might get an error or a wrong response.br> !--#SECTION ID Range--> div classsubHeaderContainer>a href#id-range titleClick to link to this header>§/a> span classsubHeader idid-range>ID Range:/span>/div> If this filter is used, you will only get jokes that are within the provided range of IDs.br> You dont necessarily need to provide an ID i>range/i> though, a single ID will work just fine as well.br> Example: an ID range of 0-9 will mean you will only get one of the first 10 jokes, while an ID range of 5 will mean you will only get the 6th joke.br> You can set the ID range by using the a href#idrange-param>?idRange/a> URL parameter.br> As there are currently 1368 jokes, the ID range can be anywhere in the range of mark>0/mark> to mark>1367/mark>br> This range varies from language to language though, so I recommend taking a look at the a href#info-endpoint>/info endpoint/a>, which contains all possible ID ranges.br> !--#SECTION Amount--> div classsubHeaderContainer>a href#amount titleClick to link to this header>§/a> span classsubHeader idamount>Joke Amount:/span>/div> This filter allows you to set a certain amount of jokes to receive in a single call to the a href#joke-endpoint>Get Joke endpoint./a>br> You can set it using the a href#amount-param>?amount/a> URL parameter.br> Setting the filter to an invalid number will result in the API defaulting to serving a single joke.br> Setting it to a number larger than 10 will make JokeAPI default to the maximum (10).br> If you request more than 5 jokes, the API will try to serve them encoded with Brotli, Gzip or Deflate, depending on whether or not you set a a hrefhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding target_blank>Accept-Encoding/a> header.br> !-- #MARKER Contributors --> div classdocHeader targetBlink idcontributors>a classheaderAnchorContainer href#contributors titleClick to link to this header>🔗/a>span classdocHeaderText>Contributors:/span>/div> The following is a list of people that have directly contributed to JokeAPIs development.br> I am very grateful for this voluntary effort to improve JokeAPI and would like to thank anyone who contributed :)br> br> div idcontributorsContainer> (Loading...) /div> br>br> If you want to contribute to JokeAPI, please a hrefhttps://github.com/Sv443-Network/JokeAPI/blob/master/.github/Contributing.md target_blank>read this guide./a> !-- #MARKER Dependents --> div classdocHeader targetBlink iddependents>a classheaderAnchorContainer href#dependents titleClick to link to this header>🔗/a>span classdocHeaderText>Dependents:/span>/div> These are some of the projects that depend on JokeAPI: ul> li>a hrefhttps://github.com/ZephyrVentum/dozens-Advices target_blank>dozens Advices/a> by a hrefhttps://github.com/ZephyrVentum target_blank>ZephyrVentum/a>/li> li>a hrefhttps://github.com/QGIsK/Shadow-bot target_blank>shadow-bot/a> by a hrefhttps://github.com/QGIsK target_blank>QGIsK/a>/li> li>a hrefhttps://github.com/aksty/Jokepy target_blank>Jokepy/a> by a hrefhttps://github.com/aksty/Jokepy target_blank>aksty/a>/li> li>a hrefhttps://github.com/whiteadi/Dark1 target_blank>Dark1/a> by a hrefhttps://github.com/whiteadi target_blank>whiteadi/a>/li> li>a hrefhttps://github.com/LiamTownsley/Prejudice-Networks target_blank>Prejudice-Networks/a> by a hrefhttps://github.com/LiamTownsley target_blank>LiamTownsley/a>/li> li>a hrefhttps://irshad.ml/humour.html target_blank>https://irshad.ml/humour.html/a> by a hrefhttps://github.com/draco-malfoy target_blank>draco-malfoy/a>/li> li>a hrefhttps://github.com/variousnabil/Random-Joke-Generator-with-Flutter target_blank>Random-Joke-Generator-with-Flutter/a> by a hrefhttps://github.com/variousnabil target_blank>variousnabil/a>/li> li>a hrefhttps://thatcopy.pw/comma target_blank>comma/a> by a hrefhttps://github.com/ThatCopy target_blank>ThatCopy/a>/li> li>a hrefhttps://github.com/AlHood77/Joke_Teller target_blank>Joke Teller/a> by a hrefhttps://github.com/AlHood77 target_blank>AlHood77/a>/li> li>a hrefhttps://github.com/remcoov/jokes target_blank>Jokes plugin for Craft CMS 3.x/a> by a hrefhttps://github.com/remcoov target_blank>remcoov/a>/li> li>a hrefhttps://github.com/ToastIT-dev/PoshBot.Joker target_blank>PoshBot.Joker/a> by a hrefhttps://github.com/ToastIT-dev target_blank>ToastIT-dev/a>/li> li>a hrefhttps://github.com/Sv443-Network/JokeAPI_ComputerCraft target_blank>JokeAPI_ComputerCraft/a> by a hrefhttps://github.com/Sv443 target_blank>Sv443/a>/li> li>a hrefhttps://github.com/jonathanbossenger/devdadjokes target_blank>Dev Dad Jokes/a> by a hrefhttps://github.com/jonathanbossenger target_blank>Jonathan Bossenger/a>/li> !-- li>a hrefxyz target_blank>xyz/a> by a hrefhttps://github.com/xyz target_blank>xyz/a>/li> --> /ul> br> (a hrefhttps://github.com/Sv443-Network/JokeAPI/issues/new/choose target_blank>Submit an issue/a> to get your project added here) !-- #MARKER Legal Stuff --> div classdocHeader targetBlink idlegal>a classheaderAnchorContainer href#legal titleClick to link to this header>🔗/a>span classdocHeaderText>Legal Stuff:/span>/div> !-- #SECTION License --> div classsubHeaderContainer>a href#license titleClick to link to this header>§/a> span classsubHeader idlicense>License:/span>/div> div classindented> JokeAPI is licensed under the MIT License.br> Before modifying and / or redistributing the source code, please take two minutes to read the license text.br> a hrefhttps://sv443.net/LICENSE target_blank>You can view the full license text by clicking here./a> /div> !-- #SECTION Privacy --> br>br> div classsubHeaderContainer>a href#privacy titleClick to link to this header>§/a> span classsubHeader idprivacy>Privacy:/span>/div> div classindented> JokeAPI has to collect some anonymized data to work.br> To view a list with details, please span classmimica onclickprivPolMoreInfo()>click here./span>br> To view the privacy policy, please a hrefhttps://sv443.net/privacypolicy/en target_blank>click here./a>br> To view the site notice / imprint, a hrefhttps://sv443.net/imprint/en target_blank>click here./a> /div> !-- #SECTION Disclaimer --> br>br> div classsubHeaderContainer>a href#disclaimer titleClick to link to this header>§/a> span classsubHeader iddisclaimer>Disclaimer:/span>/div> div classindented> I will hereby not claim any legal responsibility or liability for JokeAPI and the jokes it serves (especially those from the Dark category).br> Whether it is used maliciously or breaks something in your project or someone gets offended by a joke, I cant be held accountable.br> Additionally, I will only be able to provide security updates for a small selection of versions, a list of which you can find a hrefhttps://github.com/Sv443-Network/JokeAPI/security/policy#supported-versions target_blank>here./a>br> I am doing my best to ensure security and stability but theres only so much a single developer can do.br> Please report any issue that may arise to a hrefhttps://github.com/Sv443-Network/JokeAPI/issues/new/choose target_blank>the GitHub issue tracker/a> and I will try my best to fix it as soon as possible.br> If you want to contact me, you can a hrefhttps://sv443.net/discord target_blank>join my Discord server/a> (fastest way to contact me) or send me an E-Mail: span classantiBotE data-encY29udGFjdEBzdjQ0My5uZXQ>(click to show)/span> /div> !-- #MARKER Attributions --> div classdocHeader targetBlink idattributions>a classheaderAnchorContainer href#attributions titleClick to link to this header>🔗/a>span classdocHeaderText>Attributions:/span>/div> These are the attributions to everything made by third parties that JokeAPI is based on or needs to function. !-- #SECTION Fonts --> br>br> div classsubHeaderContainer>a href#fonts titleClick to link to this header>§/a> span classsubHeader idfonts>Fonts:/span>/div> div classindented> JokeAPI uses these third party fonts on its documentation page: ul> li>a hrefhttps://github.com/Microsoft/Cascadia-Code stylefont-family: Cascadia Code; target_blank>Cascadia Code/a> by a hrefhttps://github.com/Microsoft target_blank>Microsoft/a>/li> li>a hrefhttps://github.com/Google/Roboto stylefont-family: Roboto Mono, monospace; target_blank>Roboto/a> by a hrefhttps://github.com/Google target_blank>Google/a>/li> /ul> /div> br>br> div classsubHeaderContainer>a href#other-attributions titleClick to link to this header>§/a> span classsubHeader idother-attributions>Other Attributions:/span>/div> div classindented> Third party icons used on this page: ul> li>a hrefhttps://mozilla.org/ target_blank>The Rust icon/a>/li> li>a hrefhttps://www.python.org/psf/ target_blank>The Python icon/a>/li> li>a hrefhttps://openjsf.org/ target_blank>The Node.js icon/a>/li> li>a hrefhttps://about.google/ target_blank>The Go icon/a>/li> li>a hrefhttps://about.google/ target_blank>The Dart icon/a>/li> li>a hrefhttps://microsoft.com/ target_blank>The C# icon/a>/li> li>a hrefhttps://jetbrains.com/ target_blank>The Kotlin icon/a>/li> li>a hrefhttps://oracle.com/ target_blank>The Java icon/a>/li> li>a hrefhttps://about.google/ target_blank>The Android icon/a>/li> li>a hrefhttps://microsoft.com/ target_blank>The TypeScript icon/a>/li> li>a hrefhttps://www.gingerbill.org/ target_blank>The Odin icon/a>/li> li>a hrefhttps://www.php.net/download-logos.php target_blank>The PHP icon/a>/li> /ul> The Sv443 Network is not endorsed by or affiliated with any of the above listed companies or legal entities.br> All icons are re-hosted to ensure stability and uniformity. They are also protected from being indexed by web crawlers.br> br> br> The rectangular badges, like the ones found in the a href#uptime>uptime/a> and a href#security>security/a> sections, are powered by a hrefhttps://shields.io/ target_blank>Shields.io/a> /div> !-- #SECTION Libraries --> br>br> div classsubHeaderContainer>a href#libraries titleClick to link to this header>§/a> span classsubHeader idlibraries>Libraries:/span>/div> div classindented> JokeAPI uses these libraries: ul> li>a hrefhttps://github.com/google/code-prettify target_blank>Code-Prettify/a> by a hrefhttps://github.com/Google target_blank>Google/a>/li> li>a hrefhttps://github.com/Sv443/JSLib target_blank>JSLib/a> by a hrefhttps://github.com/Sv443 target_blank>Sv443/a>/li> /ul> These libraries are served using a hrefhttps://www.jsdelivr.com/ target_blank>jsDelivr./a>br> /div> !-- #SECTION Dependencies --> br>br> div classsubHeaderContainer>a href#dependencies titleClick to link to this header>§/a> span classsubHeader iddependencies>Dependencies:/span>/div> div classindented> These are the packages JokeAPI depends on (excluding dependencies of dependencies and devDependencies): ul> li>a hrefhttps://npmjs.com/package/@pm2/io target_blank>@pm2/io/a>/li> li>a hrefhttps://npmjs.com/package/dotenv target_blank>dotenv/a>/li> li>a hrefhttps://npmjs.com/package/farmhash target_blank>farmhash/a>/li> li>a hrefhttps://npmjs.com/package/fs-extra target_blank>fs-extra/a>/li> li>a hrefhttps://npmjs.com/package/fuse.js target_blank>fuse.js/a>/li> li>a hrefhttps://npmjs.com/package/http-ratelimit target_blank>http-ratelimit/a>/li> li>a hrefhttps://npmjs.com/package/js2xmlparser target_blank>js2xmlparser/a>/li> li>a hrefhttps://npmjs.com/package/json-to-pretty-yaml target_blank>json-to-pretty-yaml/a>/li> li>a hrefhttps://npmjs.com/package/mysql target_blank>mysql/a>/li> li>a hrefhttps://npmjs.com/package/node-wrap target_blank>node-wrap/a>/li> li>a hrefhttps://npmjs.com/package/promise-all-sequential target_blank>promise-all-sequential/a>/li> li>a hrefhttps://npmjs.com/package/rate-limiter-flexible target_blank>rate-limiter-flexible/a>/li> li>a hrefhttps://npmjs.com/package/request-ip target_blank>request-ip/a>/li> li>a hrefhttps://npmjs.com/package/snyk target_blank>snyk/a>/li> li>a hrefhttps://npmjs.com/package/svjsl target_blank>svjsl/a>/li> li>a hrefhttps://npmjs.com/package/url-parse target_blank>url-parse/a>/li> li>a hrefhttps://npmjs.com/package/xss target_blank>xss/a>/li> !-- li>a hrefhttps://npmjs.com/package/XXXX target_blank>XXXX/a>/li> --> /ul> /div> br>br>br>br> footer idcopyrightNotice> span>© Copyright 2018-span classinsert-current-year>2025/span> Sv443 - licensed under the a hrefhttps://sv443.net/LICENSE target_blank>MIT license/a>/span>br> span>This project is a part of the a hrefhttps://sv443.net/ target_blank>Sv443 Network/a>/span> /footer> /main> /div> !-- #MARKER SideNav --> div idsidenav classsidenav noselect> div idsidenavHeader> div classsidenavHeaderItem noselect>Menu/div> div classsidenavHeaderItem spacerItem>/div> a classsidenavHeaderItem closebtn mimica noul noselect nopad rtext onclickcloseNav() titleClick or press Esc to close>×/a> /div> div idsidenavContent> a classnoul onclickcloseNav() href#info titleSome information about JokeAPI>Information/a> a classnoul onclickcloseNav() href#news titleThe latest news about JokeAPI>News/a> a classnoul onclickcloseNav() href#try-it titleAn interactive form to try out the API>Try it out/a> a classnoul onclickcloseNav() href#getting-started titleThis is where you should start if you are new to JokeAPI>Getting Started/a> a classnoul onclickcloseNav() href#wrappers titleAPI Wrappers make using JokeAPI easier>API Wrappers/a> a classnoul onclickcloseNav() href#submit titleA form to submit a joke to JokeAPI>Submit a Joke/a> div classsidenavSpacer>/div> a classnoul onclickcloseNav() href#url-parameters titleAll URL Parameters you can use and how to use them>URL Parameters/a> a classnoul onclickcloseNav() href#safe-mode titleHow to enable JokeAPIs Safe Mode>Safe Mode/a> details> summary titleAll endpoints of JokeAPI> span classsidenav-mimica>Endpoints/span> /summary> ul> li>a classnoul onclickcloseNav() href#joke-endpoint>Get Joke/a>/li> li>a classnoul onclickcloseNav() href#info-endpoint>Info/a>/li> li>a classnoul onclickcloseNav() href#categories-endpoint>Categories/a>/li> li>a classnoul onclickcloseNav() href#langcodes-endpoint>Language Codes/a>/li> li>a classnoul onclickcloseNav() href#languages-endpoint>Supported Languages/a>/li> li>a classnoul onclickcloseNav() href#flags-endpoint>Flags/a>/li> li>a classnoul onclickcloseNav() href#formats-endpoint>Formats/a>/li> li>a classnoul onclickcloseNav() href#ping-endpoint>Ping/a>/li> li>a classnoul onclickcloseNav() href#endpoints-endpoint>Endpoints/a>/li> li>a classnoul onclickcloseNav() href#submit-endpoint>Submit/a>/li> /ul> /details> a classnoul onclickcloseNav() href#filtering titleHow you can filter jokes>Filtering Jokes/a> a classnoul onclickcloseNav() href#api-tokens titleAll about JokeAPIs API tokens>API Tokens/a> a classnoul onclickcloseNav() href#examples titleSome code examples of how to use JokeAPI>Examples/a> div classsidenavSpacer>/div> a classnoul onclickcloseNav() href#errors titleHow errors are structured>Errors/a> a classnoul onclickcloseNav() href#rate-limiting titleHow JokeAPI protects itself against DoS attacks>Rate Limiting/a> a classnoul onclickcloseNav() href#troubleshooting titleSome fixes for common errors>Troubleshooting/a> div classsidenavSpacer>/div> !-- details> summary> span classsidenav-mimica>Examples/span> /summary> ul> li>a classnoul onclickcloseNav() href#example-node>Node.js/a>/li> li>a classnoul onclickcloseNav() href#example-js>Web-JS/a>/li> li>a classnoul onclickcloseNav() href#example-cs>C#/a>/li> /ul> /details> --> details> summary> span classsidenav-mimica titleWhat certain terms from this documentation mean>Terminology/span> /summary> ul> li>a classnoul onclickcloseNav() href#categories>Categories/a>/li> li>a classnoul onclickcloseNav() href#category-aliases>Category Aliases/a>/li> li>a classnoul onclickcloseNav() href#blacklist-flags>(Blacklist-) Flags/a>/li> li>a classnoul onclickcloseNav() href#response-formats>Formats/a>/li> li>a classnoul onclickcloseNav() href#joke-type>Joke Type/a>/li> li>a classnoul onclickcloseNav() href#search-string>Search String/a>/li> li>a classnoul onclickcloseNav() href#id-range>ID Range/a>/li> li>a classnoul onclickcloseNav() href#amount>Joke Amount/a>/li> /ul> /details> a classnoul onclickcloseNav() href#contributors titlePeople who contributed to JokeAPI>Contributors/a> a classnoul onclickcloseNav() href#dependents titleProjects that use JokeAPI>Dependents/a> a classnoul onclickcloseNav() href#legal titleAll the legal stuff>Legal Stuff/a> a classnoul bottomspacer onclickcloseNav() href#attributions titleAttributions to everything made by third parties that JokeAPI is based on>Attributions/a> /div> /div> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]