{"openapi":"3.0.3","info":{"title":"Convert4Me API","version":"1.0.0","description":"One GET request per tool. No sign-up, no API key. CORS is open for browsers, servers and edge runtimes. Inputs are query parameters, so keep long text under about 6,000 characters. Answers are cacheable."},"servers":[{"url":"https://api.convert4me.com/api/v1"}],"paths":{"/convert-case":{"get":{"tags":["Case Converters"],"summary":"Convert Case","description":"Change text to lower, UPPER, Capitalized, Title, Sentence, aLtErNaTiNg or iNVERSE case, or hyphenate it.","operationId":"convert_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: lower, upper, capitalize, title, sentence, alternating, inverse, hyphenate. Example: upper","schema":{"type":"string","enum":["lower","upper","capitalize","title","sentence","alternating","inverse","hyphenate"],"default":"lower"}},{"name":"keep_builtin","in":"query","required":false,"description":"Put back the capitals of days, months, places, abbreviations such as NASA and brands such as iPhone after the conversion (the website does this by default). Example: True","schema":{"type":"boolean","default":false}},{"name":"keep_words","in":"query","required":false,"description":"Your own words to keep exactly as written, separated by commas or new lines (up to 200). Example: Acme Corp, eBay","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/uppercase":{"get":{"tags":["Case Converters"],"summary":"Uppercase","description":"Turn every letter into a capital letter.","operationId":"uppercase","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/lowercase":{"get":{"tags":["Case Converters"],"summary":"Lowercase","description":"Turn every letter into a small letter.","operationId":"lowercase","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/title-case":{"get":{"tags":["Case Converters"],"summary":"Title Case","description":"Headline style (small words like 'of' and 'the' stay lowercase), a style guide (AP, APA, Chicago/MLA) or every word capitalized.","operationId":"title_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: title, capitalize, title-ap, title-apa, title-chicago. Example: capitalize","schema":{"type":"string","enum":["title","capitalize","title-ap","title-apa","title-chicago"],"default":"title"}},{"name":"keep_builtin","in":"query","required":false,"description":"Put back the capitals of days, months, places, abbreviations such as NASA and brands such as iPhone after the conversion (the website does this by default). Example: True","schema":{"type":"boolean","default":false}},{"name":"keep_words","in":"query","required":false,"description":"Your own words to keep exactly as written, separated by commas or new lines (up to 200). Example: Acme Corp, eBay","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/sentence-case":{"get":{"tags":["Case Converters"],"summary":"Sentence Case","description":"Capital letter at the start of each sentence only.","operationId":"sentence_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"keep_builtin","in":"query","required":false,"description":"Put back the capitals of days, months, places, abbreviations such as NASA and brands such as iPhone after the conversion (the website does this by default). Example: True","schema":{"type":"boolean","default":false}},{"name":"keep_words","in":"query","required":false,"description":"Your own words to keep exactly as written, separated by commas or new lines (up to 200). Example: Acme Corp, eBay","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/inverse-case":{"get":{"tags":["Case Converters"],"summary":"Inverse Case","description":"Swap capitals and small letters, or alternate them.","operationId":"inverse_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: inverse, alternating. Example: alternating","schema":{"type":"string","enum":["inverse","alternating"],"default":"inverse"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/camel-case":{"get":{"tags":["Case Converters"],"summary":"camelCase","description":"Join words in camelCase (also PascalCase, snake_case, kebab-case, CONSTANT_CASE). One result per line.","operationId":"camel_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: camel, pascal, snake, kebab, constant. Example: pascal","schema":{"type":"string","enum":["camel","pascal","snake","kebab","constant"],"default":"camel"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/pascal-case":{"get":{"tags":["Case Converters"],"summary":"PascalCase","description":"Join words in PascalCase (also camelCase, snake_case, kebab-case, CONSTANT_CASE). One result per line.","operationId":"pascal_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: pascal, camel, snake, kebab, constant. Example: camel","schema":{"type":"string","enum":["pascal","camel","snake","kebab","constant"],"default":"pascal"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/snake-case":{"get":{"tags":["Case Converters"],"summary":"snake_case","description":"Join words in snake_case (also camelCase, PascalCase, kebab-case, CONSTANT_CASE). One result per line.","operationId":"snake_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: snake, camel, pascal, kebab, constant. Example: camel","schema":{"type":"string","enum":["snake","camel","pascal","kebab","constant"],"default":"snake"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/kebab-case":{"get":{"tags":["Case Converters"],"summary":"kebab-case","description":"Join words in kebab-case (also camelCase, PascalCase, snake_case, CONSTANT_CASE). One result per line.","operationId":"kebab_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: kebab, camel, pascal, snake, constant. Example: camel","schema":{"type":"string","enum":["kebab","camel","pascal","snake","constant"],"default":"kebab"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/constant-case":{"get":{"tags":["Case Converters"],"summary":"CONSTANT_CASE","description":"Join words in CONSTANT_CASE (also camelCase, PascalCase, snake_case, kebab-case). One result per line.","operationId":"constant_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: constant, snake, camel, pascal, kebab. Example: snake","schema":{"type":"string","enum":["constant","snake","camel","pascal","kebab"],"default":"constant"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/dot-case":{"get":{"tags":["Case Converters"],"summary":"dot.case","description":"Join words in lowercase with dots (also path/case, kebab-case, snake_case, camelCase). One result per line.","operationId":"dot_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: dot, path, kebab, snake, camel. Example: path","schema":{"type":"string","enum":["dot","path","kebab","snake","camel"],"default":"dot"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/path-case":{"get":{"tags":["Case Converters"],"summary":"path/case","description":"Join words in lowercase with slashes (also dot.case, kebab-case, snake_case, camelCase). One result per line.","operationId":"path_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: path, dot, kebab, snake, camel. Example: dot","schema":{"type":"string","enum":["path","dot","kebab","snake","camel"],"default":"path"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/train-case":{"get":{"tags":["Case Converters"],"summary":"Train-Case","description":"Join capitalized words with hyphens, as in HTTP headers (also kebab-case, PascalCase, camelCase, snake_case). One result per line.","operationId":"train_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: train, kebab, pascal, camel, snake. Example: kebab","schema":{"type":"string","enum":["train","kebab","pascal","camel","snake"],"default":"train"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/ap-title-case":{"get":{"tags":["Case Converters"],"summary":"AP Title Case","description":"AP style headlines: words of four letters or more are capitalized, short articles, conjunctions and prepositions stay lowercase.","operationId":"ap_title_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: title-ap, title-apa, title-chicago, title, sentence. Example: title-apa","schema":{"type":"string","enum":["title-ap","title-apa","title-chicago","title","sentence"],"default":"title-ap"}},{"name":"keep_builtin","in":"query","required":false,"description":"Put back the capitals of days, months, places, abbreviations such as NASA and brands such as iPhone after the conversion (the website does this by default). Example: True","schema":{"type":"boolean","default":false}},{"name":"keep_words","in":"query","required":false,"description":"Your own words to keep exactly as written, separated by commas or new lines (up to 200). Example: Acme Corp, eBay","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/apa-title-case":{"get":{"tags":["Case Converters"],"summary":"APA Title Case","description":"APA style titles: words of four letters or more are capitalized, short articles, conjunctions and prepositions stay lowercase.","operationId":"apa_title_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: title-apa, title-ap, title-chicago, title, sentence. Example: title-ap","schema":{"type":"string","enum":["title-apa","title-ap","title-chicago","title","sentence"],"default":"title-apa"}},{"name":"keep_builtin","in":"query","required":false,"description":"Put back the capitals of days, months, places, abbreviations such as NASA and brands such as iPhone after the conversion (the website does this by default). Example: True","schema":{"type":"boolean","default":false}},{"name":"keep_words","in":"query","required":false,"description":"Your own words to keep exactly as written, separated by commas or new lines (up to 200). Example: Acme Corp, eBay","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/chicago-title-case":{"get":{"tags":["Case Converters"],"summary":"Chicago / MLA Title Case","description":"Chicago and MLA titles: every article, preposition and coordinating conjunction stays lowercase, whatever its length.","operationId":"chicago_title_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: title-chicago, title-ap, title-apa, title, sentence. Example: title-ap","schema":{"type":"string","enum":["title-chicago","title-ap","title-apa","title","sentence"],"default":"title-chicago"}},{"name":"keep_builtin","in":"query","required":false,"description":"Put back the capitals of days, months, places, abbreviations such as NASA and brands such as iPhone after the conversion (the website does this by default). Example: True","schema":{"type":"boolean","default":false}},{"name":"keep_words","in":"query","required":false,"description":"Your own words to keep exactly as written, separated by commas or new lines (up to 200). Example: Acme Corp, eBay","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/camelcase-to-snake-case":{"get":{"tags":["Case Converters"],"summary":"camelCase to snake_case","description":"Convert camelCase or PascalCase names to snake_case (also kebab-case, CONSTANT_CASE). One result per line.","operationId":"camelcase_to_snake_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: snake, camel, pascal, kebab, constant. Example: camel","schema":{"type":"string","enum":["snake","camel","pascal","kebab","constant"],"default":"snake"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/snake-case-to-camel-case":{"get":{"tags":["Case Converters"],"summary":"snake_case to camelCase","description":"Convert snake_case or kebab-case names to camelCase or PascalCase (also snake_case, kebab-case, CONSTANT_CASE). One result per line.","operationId":"snake_case_to_camel_case","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: camel, pascal, snake, kebab, constant. Example: pascal","schema":{"type":"string","enum":["camel","pascal","snake","kebab","constant"],"default":"camel"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/remove-extra-spaces":{"get":{"tags":["Text Tools"],"summary":"Remove Extra Spaces","description":"Squeeze repeated spaces and tabs into one and trim every line; or delete empty lines or join the lines.","operationId":"remove_extra_spaces","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: trim-spaces, remove-empty-lines, remove-breaks. Example: remove-empty-lines","schema":{"type":"string","enum":["trim-spaces","remove-empty-lines","remove-breaks"],"default":"trim-spaces"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/remove-duplicate-lines":{"get":{"tags":["Text Tools"],"summary":"Remove Duplicate Lines","description":"Keep the first copy of each line and delete the repeats.","operationId":"remove_duplicate_lines","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: dedupe, dedupe-ignore-case. Example: dedupe-ignore-case","schema":{"type":"string","enum":["dedupe","dedupe-ignore-case"],"default":"dedupe"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/sort-lines":{"get":{"tags":["Text Tools"],"summary":"Sort Lines","description":"Sort lines A to Z, Z to A or by length, or reverse their order. Numbers sort naturally (2 before 10).","operationId":"sort_lines","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: sort-az, sort-za, sort-length, reverse-lines. Example: sort-za","schema":{"type":"string","enum":["sort-az","sort-za","sort-length","reverse-lines"],"default":"sort-az"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/remove-line-breaks":{"get":{"tags":["Text Tools"],"summary":"Remove Line Breaks","description":"Join lines into one, delete empty lines, or trim extra spaces.","operationId":"remove_line_breaks","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: remove-breaks, remove-empty-lines, trim-spaces. Example: remove-empty-lines","schema":{"type":"string","enum":["remove-breaks","remove-empty-lines","trim-spaces"],"default":"remove-breaks"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/reverse-text":{"get":{"tags":["Text Tools"],"summary":"Reverse Text","description":"Reverse the characters, the words, each word, or the lines.","operationId":"reverse_text","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"Which conversion to apply: reverse-text, reverse-words, reverse-each-word, reverse-lines. Example: reverse-words","schema":{"type":"string","enum":["reverse-text","reverse-words","reverse-each-word","reverse-lines"],"default":"reverse-text"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/remove-accents":{"get":{"tags":["Text Tools"],"summary":"Remove Accents","description":"Strip accents: Café Crème Brûlée becomes Cafe Creme Brulee.","operationId":"remove_accents","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/word-counter":{"get":{"tags":["Text Tools"],"summary":"Word Counter","description":"Count words, characters (with and without spaces), lines, sentences and paragraphs. Reading time assumes 200 words per minute.","operationId":"word_counter","parameters":[{"name":"text","in":"query","required":true,"description":"The text to count. Example: Hello world. How are you?","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/character-counter":{"get":{"tags":["Text Tools"],"summary":"Character Counter","description":"Count words, characters (with and without spaces), lines, sentences and paragraphs. Reading time assumes 200 words per minute.","operationId":"character_counter","parameters":[{"name":"text","in":"query","required":true,"description":"The text to count. Example: Hello world. How are you?","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/line-counter":{"get":{"tags":["Text Tools"],"summary":"Line Counter","description":"Count words, characters (with and without spaces), lines, sentences and paragraphs. Reading time assumes 200 words per minute.","operationId":"line_counter","parameters":[{"name":"text","in":"query","required":true,"description":"The text to count. Example: Hello world. How are you?","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/find-and-replace":{"get":{"tags":["Text Tools"],"summary":"Find and Replace","description":"Replace every occurrence of some text. Plain text search only (no regular expressions in the API, for safety).","operationId":"find_and_replace","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert. Example: the lord of the rings","schema":{"type":"string","maxLength":6000}},{"name":"find","in":"query","required":true,"description":"The text to find. Example: cat","schema":{"type":"string","maxLength":6000}},{"name":"replace","in":"query","required":false,"description":"What to put instead (may be empty). Example: dog","schema":{"type":"string","default":"","maxLength":6000}},{"name":"match_case","in":"query","required":false,"description":"Treat capitals and small letters as different.","schema":{"type":"boolean","default":false}},{"name":"whole_word","in":"query","required":false,"description":"Only match whole words.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/text-to-slug":{"get":{"tags":["Developer Tools"],"summary":"Text to Slug","description":"Turn a title into a URL-friendly slug: accents removed, lowercase, hyphens. One slug per line.","operationId":"text_to_slug","parameters":[{"name":"text","in":"query","required":true,"description":"The title or titles (one per line). Example: Café Menu & Prices!","schema":{"type":"string","maxLength":6000}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/url-encode-decode":{"get":{"tags":["Developer Tools"],"summary":"URL Encode / Decode","description":"Percent-encode text so it is safe inside a web address, or decode it again (like encodeURIComponent / decodeURIComponent).","operationId":"url_encode_decode","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert.","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"encode or decode.","schema":{"type":"string","enum":["encode","decode"],"default":"encode"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/html-encode-decode":{"get":{"tags":["Developer Tools"],"summary":"HTML Encode / Decode","description":"Escape & < > and quotes into HTML entities (or every non-ASCII character as a numeric entity), or decode entities such as &amp; and &#169; back to text.","operationId":"html_encode_decode","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert.","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"encode, encode-all (also numeric entities for every non-ASCII character) or decode.","schema":{"type":"string","enum":["encode","encode-all","decode"],"default":"encode"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/base64-encode-decode":{"get":{"tags":["Developer Tools"],"summary":"Base64 Encode / Decode","description":"Encode text as Base64 (UTF-8, so every language and emoji works), as URL-safe Base64, or decode Base64 back to text.","operationId":"base64_encode_decode","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert.","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"encode, urlsafe (URL-safe encode, no padding) or decode.","schema":{"type":"string","enum":["encode","urlsafe","decode"],"default":"encode"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/text-to-binary":{"get":{"tags":["Developer Tools"],"summary":"Text to Binary","description":"Write each byte of the text as 8 binary digits, or turn binary back into text.","operationId":"text_to_binary","parameters":[{"name":"text","in":"query","required":true,"description":"The text to convert.","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"to-binary or from-binary.","schema":{"type":"string","enum":["to-binary","from-binary"],"default":"to-binary"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/json-formatter":{"get":{"tags":["Developer Tools"],"summary":"JSON Formatter","description":"Validate JSON and pretty-print it (2 spaces), minify it, or sort every object's keys A to Z.","operationId":"json_formatter","parameters":[{"name":"text","in":"query","required":true,"description":"The JSON text. Example: {\"b\":1,\"a\":[1,2]}","schema":{"type":"string","maxLength":6000}},{"name":"action","in":"query","required":false,"description":"format, minify or sort.","schema":{"type":"string","enum":["format","minify","sort"],"default":"format"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/md5-hash-generator":{"get":{"tags":["Developer Tools"],"summary":"MD5 Hash Generator","description":"The MD5 hash of some text (UTF-8), as lowercase hexadecimal. Text only: the website can also hash files, which a GET request cannot carry.","operationId":"md5_hash_generator","parameters":[{"name":"text","in":"query","required":true,"description":"The text to hash. Example: hello","schema":{"type":"string","maxLength":6000}},{"name":"uppercase","in":"query","required":false,"description":"Write the hex digits in capitals.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/sha1-hash-generator":{"get":{"tags":["Developer Tools"],"summary":"SHA-1 Hash Generator","description":"The SHA-1 hash of some text (UTF-8), as lowercase hexadecimal. Text only: the website can also hash files, which a GET request cannot carry.","operationId":"sha1_hash_generator","parameters":[{"name":"text","in":"query","required":true,"description":"The text to hash. Example: hello","schema":{"type":"string","maxLength":6000}},{"name":"uppercase","in":"query","required":false,"description":"Write the hex digits in capitals.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/sha256-hash-generator":{"get":{"tags":["Developer Tools"],"summary":"SHA-256 Hash Generator","description":"The SHA-256 hash of some text (UTF-8), as lowercase hexadecimal. Text only: the website can also hash files, which a GET request cannot carry.","operationId":"sha256_hash_generator","parameters":[{"name":"text","in":"query","required":true,"description":"The text to hash. Example: hello","schema":{"type":"string","maxLength":6000}},{"name":"uppercase","in":"query","required":false,"description":"Write the hex digits in capitals.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/sha512-hash-generator":{"get":{"tags":["Developer Tools"],"summary":"SHA-512 Hash Generator","description":"The SHA-512 hash of some text (UTF-8), as lowercase hexadecimal. Text only: the website can also hash files, which a GET request cannot carry.","operationId":"sha512_hash_generator","parameters":[{"name":"text","in":"query","required":true,"description":"The text to hash. Example: hello","schema":{"type":"string","maxLength":6000}},{"name":"uppercase","in":"query","required":false,"description":"Write the hex digits in capitals.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/lorem-ipsum":{"get":{"tags":["Generators"],"summary":"Lorem Ipsum Generator","description":"Placeholder text in paragraphs, sentences or words. The same seed always gives the same text.","operationId":"lorem_ipsum","parameters":[{"name":"amount","in":"query","required":false,"description":"How many paragraphs, sentences or words (1 to 200).","schema":{"type":"integer","minimum":1,"maximum":200,"default":3}},{"name":"unit","in":"query","required":false,"description":"paragraphs, sentences or words.","schema":{"type":"string","enum":["paragraphs","sentences","words"],"default":"paragraphs"}},{"name":"start_with_lorem","in":"query","required":false,"description":"Begin with the classic 'Lorem ipsum dolor sit amet'.","schema":{"type":"boolean","default":true}},{"name":"seed","in":"query","required":false,"description":"Any whole number; the same seed gives the same text.","schema":{"type":"integer","minimum":0,"maximum":4294967295,"default":1}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/fancy-text":{"get":{"tags":["Generators"],"summary":"Fancy Text Generator","description":"Turn text into bold, italic, cursive, gothic, upside-down and other Unicode styles you can paste into Instagram, X or WhatsApp.","operationId":"fancy_text","parameters":[{"name":"text","in":"query","required":true,"description":"The text to style. Example: Hello World","schema":{"type":"string","maxLength":6000}},{"name":"style","in":"query","required":false,"description":"One style, or `all` to get every style.","schema":{"type":"string","enum":["all","bold","italic","bold-italic","script","bold-script","fraktur","double-struck","sans","sans-bold","sans-italic","monospace","wide","circled","small-caps","upside-down","strikethrough","underline"],"default":"all"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/password-generator":{"get":{"tags":["Generators"],"summary":"Password Generator","description":"Random passwords from a cryptographic random source. WARNING: this one is made on the server, so it travels over the network. For a password you will really use, make it in your browser on convert4me.com/password-generator/, where it never leaves your device.","operationId":"password_generator","parameters":[{"name":"length","in":"query","required":false,"description":"Characters per password (8 to 64).","schema":{"type":"integer","minimum":8,"maximum":64,"default":16}},{"name":"lowercase","in":"query","required":false,"description":"Include a-z.","schema":{"type":"boolean","default":true}},{"name":"uppercase","in":"query","required":false,"description":"Include A-Z.","schema":{"type":"boolean","default":true}},{"name":"digits","in":"query","required":false,"description":"Include 0-9.","schema":{"type":"boolean","default":true}},{"name":"symbols","in":"query","required":false,"description":"Include symbols.","schema":{"type":"boolean","default":true}},{"name":"exclude_similar","in":"query","required":false,"description":"Leave out look-alikes such as O, 0, l, 1, I.","schema":{"type":"boolean","default":false}},{"name":"count","in":"query","required":false,"description":"How many passwords (1 to 20).","schema":{"type":"integer","minimum":1,"maximum":20,"default":1}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/qr-code-generator":{"get":{"tags":["Generators"],"summary":"QR Code Generator","description":"A QR code as an SVG or PNG image (plain squares; the website also offers styled codes with logos). The response IS the image, so you can use the URL directly as an <img src>.","operationId":"qr_code_generator","parameters":[{"name":"text","in":"query","required":true,"description":"The web address or text to encode (up to 1,500 characters). Example: https://convert4me.com","schema":{"type":"string","maxLength":1500}},{"name":"format","in":"query","required":false,"description":"svg or png.","schema":{"type":"string","enum":["svg","png"],"default":"svg"}},{"name":"size","in":"query","required":false,"description":"Pixels per square (1 to 30).","schema":{"type":"integer","minimum":1,"maximum":30,"default":8}},{"name":"ecc","in":"query","required":false,"description":"Error correction: l (7%), m (15%), q (25%), h (30%).","schema":{"type":"string","enum":["l","m","q","h"],"default":"m"}},{"name":"border","in":"query","required":false,"description":"Quiet-zone squares around the code (0 to 10).","schema":{"type":"integer","minimum":0,"maximum":10,"default":4}},{"name":"fg","in":"query","required":false,"description":"Dark colour as hex, e.g. 000000.","schema":{"type":"string","default":"000000","maxLength":7}},{"name":"bg","in":"query","required":false,"description":"Light colour as hex, e.g. ffffff.","schema":{"type":"string","default":"ffffff","maxLength":7}}],"responses":{"200":{"description":"The result","content":{"image/svg+xml":{"schema":{"type":"string"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/text-diff":{"get":{"tags":["Text Tools"],"summary":"Text Diff Checker","description":"Compare two texts line by line or word by word and list what was added and removed.","operationId":"text_diff","parameters":[{"name":"original","in":"query","required":true,"description":"The first (old) text. Example: one\ntwo\nthree","schema":{"type":"string","maxLength":3000}},{"name":"changed","in":"query","required":true,"description":"The second (new) text. Example: one\n2\nthree","schema":{"type":"string","maxLength":3000}},{"name":"mode","in":"query","required":false,"description":"lines or words.","schema":{"type":"string","enum":["lines","words"],"default":"lines"}},{"name":"ignore_case","in":"query","required":false,"description":"Treat capitals and small letters as the same.","schema":{"type":"boolean","default":false}},{"name":"ignore_spaces","in":"query","required":false,"description":"Ignore differences in spaces.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/percentage-calculator":{"get":{"tags":["Calculators"],"summary":"Percentage Calculator","description":"Five everyday percentage questions in one tool. mode=of: what is x% of y. what: x is what percent of y. total: x is y% of what number. change: percent change from x to y. adjust: x increased or decreased by y%. difference: percentage difference between x and y.","operationId":"percentage_calculator","parameters":[{"name":"mode","in":"query","required":false,"description":"Which question to answer.","schema":{"type":"string","enum":["of","what","total","change","adjust","difference"],"default":"of"}},{"name":"x","in":"query","required":true,"description":"The first number. Example: 15","schema":{"type":"number"}},{"name":"y","in":"query","required":true,"description":"The second number. Example: 200","schema":{"type":"number"}},{"name":"direction","in":"query","required":false,"description":"For mode=adjust: increase (up) or decrease (down).","schema":{"type":"string","enum":["up","down"],"default":"up"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/percentage-difference-calculator":{"get":{"tags":["Calculators"],"summary":"Percentage Difference Calculator","description":"How far apart two numbers are, as a percentage of their average. The order does not matter.","operationId":"percentage_difference_calculator","parameters":[{"name":"a","in":"query","required":true,"description":"The first value. Example: 80","schema":{"type":"number"}},{"name":"b","in":"query","required":true,"description":"The second value. Example: 100","schema":{"type":"number"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/average-calculator":{"get":{"tags":["Calculators"],"summary":"Average Calculator","description":"Mean, median, mode, range, sum, count, smallest and largest of a list of numbers.","operationId":"average_calculator","parameters":[{"name":"numbers","in":"query","required":true,"description":"Numbers separated by commas, spaces or new lines. Example: 4, 8, 15, 16, 23, 42","schema":{"type":"string","description":"Numbers separated by commas, spaces or new lines"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/fraction-calculator":{"get":{"tags":["Calculators"],"summary":"Fraction Calculator","description":"Add, subtract, multiply or divide fractions and mixed numbers, with the answer in lowest terms, as a mixed number, a decimal and a percentage.","operationId":"fraction_calculator","parameters":[{"name":"a","in":"query","required":true,"description":"First number: 3/4, 2 3/4 or 5. Negative: -2 1/2. Example: 1/2","schema":{"type":"string","maxLength":60}},{"name":"op","in":"query","required":false,"description":"add, subtract, multiply or divide.","schema":{"type":"string","enum":["add","subtract","multiply","divide"],"default":"add"}},{"name":"b","in":"query","required":true,"description":"Second number, written the same way. Example: 1/3","schema":{"type":"string","maxLength":60}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/ratio-calculator":{"get":{"tags":["Calculators"],"summary":"Ratio Calculator","description":"mode=simplify: reduce a ratio (2 or 3 parts, decimals allowed) to lowest terms. mode=missing: solve a : b = c : d when exactly one of the four is left out. mode=split: share a total in a ratio.","operationId":"ratio_calculator","parameters":[{"name":"mode","in":"query","required":false,"description":"simplify, missing or split.","schema":{"type":"string","enum":["simplify","missing","split"],"default":"simplify"}},{"name":"a","in":"query","required":false,"description":"First part (or A). Example: 12","schema":{"type":"number"}},{"name":"b","in":"query","required":false,"description":"Second part (or B). Example: 8","schema":{"type":"number"}},{"name":"c","in":"query","required":false,"description":"Third part (simplify/split, optional) or C in a proportion.","schema":{"type":"number"}},{"name":"d","in":"query","required":false,"description":"D in a proportion.","schema":{"type":"number"}},{"name":"total","in":"query","required":false,"description":"For mode=split: the amount to share. Example: 100","schema":{"type":"number"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/tip-calculator":{"get":{"tags":["Calculators"],"summary":"Tip Calculator","description":"Tip, total and per-person amounts, with an option to round each share up to a whole dollar.","operationId":"tip_calculator","parameters":[{"name":"bill","in":"query","required":true,"description":"The bill before tip. Example: 85","schema":{"type":"number","minimum":0}},{"name":"tip_percent","in":"query","required":false,"description":"Tip percentage.","schema":{"type":"number","minimum":0,"default":18}},{"name":"people","in":"query","required":false,"description":"How many people share the bill.","schema":{"type":"integer","minimum":1,"maximum":100,"default":1}},{"name":"round_up","in":"query","required":false,"description":"Round each person's share up to a whole dollar.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/discount-calculator":{"get":{"tags":["Calculators"],"summary":"Discount Calculator","description":"Sale price and amount saved, with an optional second discount (taken off the reduced price) and sales tax.","operationId":"discount_calculator","parameters":[{"name":"price","in":"query","required":true,"description":"The original price. Example: 120","schema":{"type":"number","minimum":0}},{"name":"percent_off","in":"query","required":true,"description":"Discount percentage. Example: 25","schema":{"type":"number","minimum":0,"maximum":100}},{"name":"extra_percent_off","in":"query","required":false,"description":"A second discount taken off the already reduced price.","schema":{"type":"number","minimum":0,"maximum":100,"default":0}},{"name":"tax_percent","in":"query","required":false,"description":"Sales tax added after the discounts.","schema":{"type":"number","minimum":0,"maximum":100,"default":0}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/simple-interest-calculator":{"get":{"tags":["Calculators"],"summary":"Simple Interest Calculator","description":"Interest = principal x rate x time. Time can be in years, months (1/12 year) or days (1/365 year).","operationId":"simple_interest_calculator","parameters":[{"name":"principal","in":"query","required":true,"description":"The amount. Example: 1000","schema":{"type":"number","minimum":0}},{"name":"rate","in":"query","required":true,"description":"Interest rate per year, in percent. Example: 5","schema":{"type":"number","minimum":0}},{"name":"time","in":"query","required":true,"description":"The length of time. Example: 3","schema":{"type":"number","minimum":0}},{"name":"unit","in":"query","required":false,"description":"years, months or days.","schema":{"type":"string","enum":["years","months","days"],"default":"years"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/compound-interest-calculator":{"get":{"tags":["Calculators"],"summary":"Compound Interest Calculator","description":"Growth of a starting amount with optional monthly deposits (made at the end of each month), with a year-by-year table.","operationId":"compound_interest_calculator","parameters":[{"name":"principal","in":"query","required":false,"description":"Starting amount. Example: 10000","schema":{"type":"number","minimum":0,"default":0}},{"name":"monthly_deposit","in":"query","required":false,"description":"Deposit added each month.","schema":{"type":"number","minimum":0,"default":0}},{"name":"rate","in":"query","required":true,"description":"Interest rate per year, in percent. Example: 5","schema":{"type":"number","minimum":0,"maximum":100}},{"name":"years","in":"query","required":true,"description":"Number of years (up to 100). Example: 10","schema":{"type":"number","minimum":0.0833,"maximum":100}},{"name":"compounding","in":"query","required":false,"description":"yearly, semiannual, quarterly, monthly or daily.","schema":{"type":"string","enum":["yearly","semiannual","quarterly","monthly","daily"],"default":"monthly"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/loan-payment-calculator":{"get":{"tags":["Calculators"],"summary":"Loan Payment Calculator","description":"Equal payments on a car or personal loan: payment, total interest and a yearly schedule.","operationId":"loan_payment_calculator","parameters":[{"name":"amount","in":"query","required":true,"description":"The loan amount (price minus down payment). Example: 25000","schema":{"type":"number","minimum":1}},{"name":"rate","in":"query","required":true,"description":"Interest rate / APR per year, in percent. Example: 6","schema":{"type":"number","minimum":0,"maximum":100}},{"name":"term","in":"query","required":true,"description":"Loan length. Example: 5","schema":{"type":"number","minimum":0.0833,"maximum":50}},{"name":"term_unit","in":"query","required":false,"description":"years or months.","schema":{"type":"string","enum":["years","months"],"default":"years"}},{"name":"frequency","in":"query","required":false,"description":"monthly, semi-monthly, biweekly or weekly.","schema":{"type":"string","enum":["monthly","semi-monthly","biweekly","weekly"],"default":"monthly"}},{"name":"effective_rate","in":"query","required":false,"description":"True when the yearly rate already includes compounding (UK APR).","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/bmi-calculator":{"get":{"tags":["Calculators"],"summary":"BMI Calculator","description":"Body mass index for adults, its WHO category and the weight range that counts as normal at that height. General information, not medical advice.","operationId":"bmi_calculator","parameters":[{"name":"units","in":"query","required":false,"description":"metric (cm, kg) or imperial (feet, inches, pounds).","schema":{"type":"string","enum":["metric","imperial"],"default":"metric"}},{"name":"height_cm","in":"query","required":false,"description":"Height in centimetres (metric). Example: 175","schema":{"type":"number","minimum":50,"maximum":272}},{"name":"weight_kg","in":"query","required":false,"description":"Weight in kilograms (metric). Example: 70","schema":{"type":"number","minimum":2,"maximum":650}},{"name":"feet","in":"query","required":false,"description":"Height: feet (imperial).","schema":{"type":"number","minimum":0,"maximum":9}},{"name":"inches","in":"query","required":false,"description":"Height: extra inches (imperial).","schema":{"type":"number","minimum":0,"maximum":11.99,"default":0}},{"name":"pounds","in":"query","required":false,"description":"Weight in pounds (imperial).","schema":{"type":"number","minimum":5,"maximum":1430}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/age-calculator":{"get":{"tags":["Calculators"],"summary":"Age Calculator","description":"Exact age in years, months and days from a date of birth, with totals, the weekday born and the next birthday. 'Today' is the server's UTC date unless you pass `on`.","operationId":"age_calculator","parameters":[{"name":"birth","in":"query","required":true,"description":"Date of birth, YYYY-MM-DD. Example: 1990-03-15","schema":{"type":"string","format":"date"}},{"name":"on","in":"query","required":false,"description":"Age on this date (default: today, UTC).","schema":{"type":"string","format":"date"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/date-difference-calculator":{"get":{"tags":["Calculators"],"summary":"Date Difference Calculator","description":"Years, months and days between two dates, the total days and weeks, and how many days are weekdays (Monday to Friday).","operationId":"date_difference_calculator","parameters":[{"name":"from","in":"query","required":true,"description":"Start date, YYYY-MM-DD. Example: 2026-01-01","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"End date, YYYY-MM-DD. Example: 2026-12-25","schema":{"type":"string","format":"date"}},{"name":"include_end","in":"query","required":false,"description":"Count the end date too (1 Jan to 2 Jan is then 2 days).","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/time-calculator":{"get":{"tags":["Calculators"],"summary":"Time and Hours Calculator","description":"mode=worked: hours worked between two clock times with an unpaid break and optional pay. mode=add or subtract: add or subtract two lengths of time (a_* and b_* parameters).","operationId":"time_calculator","parameters":[{"name":"mode","in":"query","required":false,"description":"worked, add or subtract.","schema":{"type":"string","enum":["worked","add","subtract"],"default":"worked"}},{"name":"start","in":"query","required":false,"description":"Start time HH:MM (mode=worked). Example: 09:00","schema":{"type":"string"}},{"name":"end","in":"query","required":false,"description":"End time HH:MM; at or before the start means the next day. Example: 17:30","schema":{"type":"string"}},{"name":"break_minutes","in":"query","required":false,"description":"Unpaid break in minutes.","schema":{"type":"number","minimum":0,"maximum":1440,"default":0}},{"name":"days_per_week","in":"query","required":false,"description":"Days worked per week.","schema":{"type":"number","minimum":0,"maximum":7,"default":5}},{"name":"hourly_rate","in":"query","required":false,"description":"Hourly pay (optional).","schema":{"type":"number","minimum":0}},{"name":"a_days","in":"query","required":false,"description":"Days in the first length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"a_hours","in":"query","required":false,"description":"Hours in the first length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"a_minutes","in":"query","required":false,"description":"Minutes in the first length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"a_seconds","in":"query","required":false,"description":"Seconds in the first length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"b_days","in":"query","required":false,"description":"Days in the second length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"b_hours","in":"query","required":false,"description":"Hours in the second length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"b_minutes","in":"query","required":false,"description":"Minutes in the second length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"b_seconds","in":"query","required":false,"description":"Seconds in the second length of time.","schema":{"type":"number","minimum":0,"maximum":100000,"default":0}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/pregnancy-due-date-calculator":{"get":{"tags":["Calculators"],"summary":"Pregnancy Due Date Calculator","description":"Estimated due date from the first day of the last period (Naegele's rule, adjusted for cycle length) or from the conception date, with weeks pregnant and key dates. An estimate only: a doctor or midwife confirms the date.","operationId":"pregnancy_due_date_calculator","parameters":[{"name":"method","in":"query","required":false,"description":"lmp (last period) or conception.","schema":{"type":"string","enum":["lmp","conception"],"default":"lmp"}},{"name":"date","in":"query","required":true,"description":"First day of the last period, or the conception date. Example: 2026-03-01","schema":{"type":"string","format":"date"}},{"name":"cycle_length","in":"query","required":false,"description":"Usual cycle length in days (method=lmp only, 20 to 45).","schema":{"type":"integer","minimum":20,"maximum":45,"default":28}},{"name":"today","in":"query","required":false,"description":"Count from this date (default: today, UTC).","schema":{"type":"string","format":"date"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/calorie-calculator":{"get":{"tags":["Calculators"],"summary":"Calorie Calculator","description":"Daily calories to keep your weight (Mifflin-St Jeor times an activity factor), targets for losing or gaining weight, and a 30/40/30 macro split. For healthy adults 18+; not medical advice.","operationId":"calorie_calculator","parameters":[{"name":"sex","in":"query","required":true,"description":"female or male (the formula needs one of them). Example: female","schema":{"type":"string","enum":["female","male"]}},{"name":"age","in":"query","required":true,"description":"Age in years (18 to 100). Example: 30","schema":{"type":"integer","minimum":18,"maximum":100}},{"name":"units","in":"query","required":false,"description":"metric (cm, kg) or imperial (feet, inches, pounds).","schema":{"type":"string","enum":["metric","imperial"],"default":"metric"}},{"name":"height_cm","in":"query","required":false,"description":"Height in centimetres (metric). Example: 175","schema":{"type":"number","minimum":50,"maximum":272}},{"name":"weight_kg","in":"query","required":false,"description":"Weight in kilograms (metric). Example: 70","schema":{"type":"number","minimum":2,"maximum":650}},{"name":"feet","in":"query","required":false,"description":"Height: feet (imperial).","schema":{"type":"number","minimum":0,"maximum":9}},{"name":"inches","in":"query","required":false,"description":"Height: extra inches (imperial).","schema":{"type":"number","minimum":0,"maximum":11.99,"default":0}},{"name":"pounds","in":"query","required":false,"description":"Weight in pounds (imperial).","schema":{"type":"number","minimum":5,"maximum":1430}},{"name":"activity","in":"query","required":false,"description":"sedentary, light, moderate, very or extra.","schema":{"type":"string","enum":["sedentary","light","moderate","very","extra"],"default":"light"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/ideal-weight-calculator":{"get":{"tags":["Calculators"],"summary":"Ideal Weight Calculator","description":"Ideal body weight from the Devine, Robinson, Miller and Hamwi formulas, and the weight range for a healthy BMI (18.5 to 24.9). Formulas are for people 152 cm (5 ft) and taller.","operationId":"ideal_weight_calculator","parameters":[{"name":"sex","in":"query","required":true,"description":"female or male (the formula needs one of them). Example: female","schema":{"type":"string","enum":["female","male"]}},{"name":"units","in":"query","required":false,"description":"metric (cm, kg) or imperial (feet, inches, pounds).","schema":{"type":"string","enum":["metric","imperial"],"default":"metric"}},{"name":"height_cm","in":"query","required":false,"description":"Height in centimetres (metric). Example: 175","schema":{"type":"number","minimum":50,"maximum":272}},{"name":"weight_kg","in":"query","required":false,"description":"Weight in kilograms (metric). Example: 70","schema":{"type":"number","minimum":2,"maximum":650}},{"name":"feet","in":"query","required":false,"description":"Height: feet (imperial).","schema":{"type":"number","minimum":0,"maximum":9}},{"name":"inches","in":"query","required":false,"description":"Height: extra inches (imperial).","schema":{"type":"number","minimum":0,"maximum":11.99,"default":0}},{"name":"pounds","in":"query","required":false,"description":"Weight in pounds (imperial).","schema":{"type":"number","minimum":5,"maximum":1430}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/water-intake-calculator":{"get":{"tags":["Calculators"],"summary":"Water Intake Calculator","description":"Estimated daily fluids: 33 ml per kg of body weight, +0.5 L per hour of exercise, +0.5 L in hot weather. A general estimate, not medical advice.","operationId":"water_intake_calculator","parameters":[{"name":"weight_kg","in":"query","required":false,"description":"Body weight in kg (20 to 400); or use pounds. Example: 70","schema":{"type":"number","minimum":20,"maximum":400}},{"name":"pounds","in":"query","required":false,"description":"Body weight in pounds (alternative to weight_kg).","schema":{"type":"number","minimum":44,"maximum":882}},{"name":"exercise_minutes","in":"query","required":false,"description":"Minutes of exercise per day (0 to 240).","schema":{"type":"number","minimum":0,"maximum":240,"default":0}},{"name":"hot","in":"query","required":false,"description":"Hot or humid weather.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/body-fat-calculator":{"get":{"tags":["Calculators"],"summary":"Body Fat Calculator","description":"Body fat percentage by the US Navy tape-measure method (height, neck, waist and, for women, hips, all in cm or inches). An estimate with an error of a few percentage points.","operationId":"body_fat_calculator","parameters":[{"name":"sex","in":"query","required":true,"description":"female or male (the formula needs one of them). Example: female","schema":{"type":"string","enum":["female","male"]}},{"name":"units","in":"query","required":false,"description":"metric (cm, kg) or imperial (inches, pounds).","schema":{"type":"string","enum":["metric","imperial"],"default":"metric"}},{"name":"height","in":"query","required":true,"description":"Height in cm (metric) or inches (imperial). Example: 175","schema":{"type":"number","minimum":1}},{"name":"neck","in":"query","required":true,"description":"Neck below the larynx, cm or inches. Example: 38","schema":{"type":"number","minimum":1}},{"name":"waist","in":"query","required":true,"description":"Waist (navel for men, narrowest point for women), cm or inches. Example: 85","schema":{"type":"number","minimum":1}},{"name":"hip","in":"query","required":false,"description":"Hips at the widest point, cm or inches (women only).","schema":{"type":"number","minimum":1}},{"name":"weight","in":"query","required":false,"description":"Weight in kg or pounds (optional, for fat and lean mass).","schema":{"type":"number","minimum":1}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/target-heart-rate-calculator":{"get":{"tags":["Calculators"],"summary":"Target Heart Rate Calculator","description":"Maximum heart rate and five training zones from your age, with an optional resting heart rate (Karvonen method). General information, not medical advice.","operationId":"target_heart_rate_calculator","parameters":[{"name":"age","in":"query","required":true,"description":"Age in years (10 to 100). Example: 40","schema":{"type":"integer","minimum":10,"maximum":100}},{"name":"resting","in":"query","required":false,"description":"Resting heart rate in beats per minute (30 to 120), optional.","schema":{"type":"number","minimum":30,"maximum":120}},{"name":"formula","in":"query","required":false,"description":"tanaka (208 - 0.7 x age) or classic (220 - age).","schema":{"type":"string","enum":["tanaka","classic"],"default":"tanaka"}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/one-rep-max-calculator":{"get":{"tags":["Calculators"],"summary":"One-Rep Max Calculator","description":"Estimated one-rep max from a weight lifted for several reps, with seven formulas, their average and a training-percentage table. Most reliable for 10 reps or fewer.","operationId":"one_rep_max_calculator","parameters":[{"name":"weight","in":"query","required":true,"description":"Weight lifted (any unit; the answer uses the same unit). Example: 100","schema":{"type":"number","minimum":0.1,"maximum":2000}},{"name":"reps","in":"query","required":true,"description":"Reps completed (1 to 20). Example: 5","schema":{"type":"integer","minimum":1,"maximum":20}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/running-pace-calculator":{"get":{"tags":["Calculators"],"summary":"Running Pace Calculator","description":"Work out pace, finish time or distance from the other two, plus speed, split times and Riegel race predictions (5K, 10K, half marathon, marathon).","operationId":"running_pace_calculator","parameters":[{"name":"solve","in":"query","required":false,"description":"pace, time or distance: what to work out.","schema":{"type":"string","enum":["pace","time","distance"],"default":"pace"}},{"name":"unit","in":"query","required":false,"description":"km or mi (for distance and pace).","schema":{"type":"string","enum":["km","mi"],"default":"km"}},{"name":"distance","in":"query","required":false,"description":"Distance in the chosen unit. Example: 5","schema":{"type":"number","minimum":0.001,"maximum":1000}},{"name":"hours","in":"query","required":false,"description":"Finish time: hours.","schema":{"type":"number","minimum":0,"default":0}},{"name":"minutes","in":"query","required":false,"description":"Finish time: minutes.","schema":{"type":"number","minimum":0,"default":0}},{"name":"seconds","in":"query","required":false,"description":"Finish time: seconds.","schema":{"type":"number","minimum":0,"default":0}},{"name":"pace_minutes","in":"query","required":false,"description":"Pace: minutes per unit.","schema":{"type":"number","minimum":0,"default":0}},{"name":"pace_seconds","in":"query","required":false,"description":"Pace: seconds per unit (below 60).","schema":{"type":"number","minimum":0,"maximum":59.999,"default":0}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/time-zone-converter":{"get":{"tags":["Calculators"],"summary":"Time Zone Converter","description":"Convert a date and time in one IANA time zone to others, with daylight saving applied for that date, the offset, the difference and any day change.","operationId":"time_zone_converter","parameters":[{"name":"from","in":"query","required":true,"description":"The starting time zone, e.g. America/New_York. Example: America/New_York","schema":{"type":"string","maxLength":64}},{"name":"date","in":"query","required":true,"description":"Date, YYYY-MM-DD. Example: 2026-01-15","schema":{"type":"string","format":"date"}},{"name":"time","in":"query","required":true,"description":"Time, HH:MM (24-hour). Example: 09:00","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"Comma-separated target zones. Example: Europe/London,Asia/Tokyo","schema":{"type":"string","default":"America/New_York,Europe/London,Asia/Kolkata,Australia/Sydney","maxLength":600}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/mortgage-payment-calculator":{"get":{"tags":["Calculators"],"summary":"Mortgage Payment Calculator","description":"Mortgage payment, interest, balance after the term and a yearly schedule for Canada (semi-annual compounding, CMHC insurance, minimum down payment), the US (plus property tax, insurance, PMI, HOA), the UK, Australia and India. Estimates only.","operationId":"mortgage_payment_calculator","parameters":[{"name":"country","in":"query","required":false,"description":"CA, US, GB, AU or IN.","schema":{"type":"string","enum":["ca","us","gb","au","in"],"default":"ca"}},{"name":"price","in":"query","required":true,"description":"Home price. Example: 600000","schema":{"type":"number","minimum":1000,"maximum":100000000}},{"name":"down","in":"query","required":false,"description":"Down payment as an amount (or use down_percent).","schema":{"type":"number"}},{"name":"down_percent","in":"query","required":false,"description":"Down payment as a percent of the price. Example: 20","schema":{"type":"number"}},{"name":"rate","in":"query","required":true,"description":"Interest rate per year, in percent. Example: 4.5","schema":{"type":"number","minimum":0,"maximum":40}},{"name":"amortization","in":"query","required":false,"description":"Amortization (CA) or loan term in years (others).","schema":{"type":"integer","minimum":1,"maximum":40,"default":25}},{"name":"term","in":"query","required":false,"description":"CA only: the term in years (rate and agreement length).","schema":{"type":"integer","minimum":1,"maximum":10,"default":5}},{"name":"rate_type","in":"query","required":false,"description":"CA only: fixed (semi-annual compounding) or variable (monthly).","schema":{"type":"string","enum":["fixed","variable"],"default":"fixed"}},{"name":"frequency","in":"query","required":false,"description":"CA only: monthly, semi-monthly, biweekly, accel-biweekly, weekly or accel-weekly.","schema":{"type":"string","enum":["monthly","semi-monthly","biweekly","accel-biweekly","weekly","accel-weekly"],"default":"monthly"}},{"name":"add_premium","in":"query","required":false,"description":"CA only: add the CMHC premium to the mortgage.","schema":{"type":"boolean","default":true}},{"name":"property_tax_percent","in":"query","required":false,"description":"US only: yearly property tax, percent of price.","schema":{"type":"number","minimum":0,"maximum":10,"default":1}},{"name":"home_insurance","in":"query","required":false,"description":"US only: yearly home insurance.","schema":{"type":"number","minimum":0,"default":1500}},{"name":"pmi_percent","in":"query","required":false,"description":"US only: yearly PMI, percent of loan (used when the down payment is under 20%).","schema":{"type":"number","minimum":0,"maximum":5,"default":0.5}},{"name":"hoa_monthly","in":"query","required":false,"description":"US only: monthly HOA fees.","schema":{"type":"number","minimum":0,"default":0}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/income-tax-calculator":{"get":{"tags":["Calculators"],"summary":"Income Tax Calculator (Canada)","description":"Estimated 2026 federal and provincial income tax, CPP, EI and take-home pay for an employee with employment income in NB, NS, NT, NU, ON, SK, YT. Other provinces are not supported yet (their rules are still being confirmed). An estimate only, not tax advice.","operationId":"income_tax_calculator","parameters":[{"name":"income","in":"query","required":true,"description":"Yearly employment income before tax. Example: 75000","schema":{"type":"number","minimum":0,"maximum":100000000}},{"name":"province","in":"query","required":true,"description":"Province or territory code: nb, ns, nt, nu, on, sk, yt. Example: on","schema":{"type":"string","enum":["nb","ns","nt","nu","on","sk","yt"]}},{"name":"deductions","in":"query","required":false,"description":"RRSP contributions and other yearly deductions.","schema":{"type":"number","minimum":0,"default":0}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/sales-tax-calculator":{"get":{"tags":["Calculators"],"summary":"Sales Tax, VAT and GST Calculator","description":"Add tax to a price, or take it out of a total, for Canada (GST/HST/PST/QST by province), the US (state + local sales tax), the UK (VAT), Australia (GST) and India (GST, CGST+SGST or IGST). Rates come from the website's tables.","operationId":"sales_tax_calculator","parameters":[{"name":"country","in":"query","required":false,"description":"CA, US, GB, AU or IN.","schema":{"type":"string","enum":["ca","us","gb","au","in"],"default":"ca"}},{"name":"amount","in":"query","required":true,"description":"The price (mode=add) or the total including tax (mode=remove). Example: 100","schema":{"type":"number","minimum":0}},{"name":"mode","in":"query","required":false,"description":"add tax or remove it.","schema":{"type":"string","enum":["add","remove"],"default":"add"}},{"name":"province","in":"query","required":false,"description":"CA: province code (on, bc, qc ...).","schema":{"type":"string","maxLength":4}},{"name":"state","in":"query","required":false,"description":"US: state name, e.g. California.","schema":{"type":"string","maxLength":40}},{"name":"local_rate","in":"query","required":false,"description":"US: local tax percent (default: the state's average).","schema":{"type":"number","minimum":0,"maximum":20}},{"name":"rate","in":"query","required":false,"description":"GB: standard, reduced or zero. AU: gst or free. IN: 0, 5, 18 or 40. Or `custom` with custom_rate.","schema":{"type":"string","maxLength":10}},{"name":"custom_rate","in":"query","required":false,"description":"A custom total rate in percent (0 to 100).","schema":{"type":"number","minimum":0,"maximum":100}},{"name":"inter_state","in":"query","required":false,"description":"IN: the sale is between states (IGST) instead of CGST + SGST.","schema":{"type":"boolean","default":false}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/mortgage-affordability-calculator":{"get":{"tags":["Calculators"],"summary":"Mortgage Affordability Calculator","description":"The home price a typical lender would allow from income, debts, other housing costs, down payment and rate, using each country's usual rules of thumb (the website's AFFORD_RULES) and, for Canada, the stress test and CMHC premium. A planning estimate, not a pre-approval.","operationId":"mortgage_affordability_calculator","parameters":[{"name":"country","in":"query","required":false,"description":"CA, US, GB, AU or IN.","schema":{"type":"string","enum":["ca","us","gb","au","in"],"default":"ca"}},{"name":"income","in":"query","required":true,"description":"Gross household income per year. Example: 110000","schema":{"type":"number","minimum":1}},{"name":"monthly_debts","in":"query","required":false,"description":"Other monthly debt payments.","schema":{"type":"number","minimum":0,"default":0}},{"name":"other_housing","in":"query","required":false,"description":"Monthly property tax, heating, condo fees and insurance.","schema":{"type":"number","minimum":0,"default":0}},{"name":"down","in":"query","required":false,"description":"Down payment saved. Example: 60000","schema":{"type":"number","minimum":0,"default":0}},{"name":"rate","in":"query","required":true,"description":"Mortgage interest rate per year, in percent. Example: 4.5","schema":{"type":"number","minimum":0,"maximum":40}},{"name":"years","in":"query","required":false,"description":"Amortization or loan term in years.","schema":{"type":"integer","minimum":1,"maximum":40,"default":25}},{"name":"housing_share","in":"query","required":false,"description":"Override: percent of income that housing costs may take.","schema":{"type":"number"}},{"name":"total_share","in":"query","required":false,"description":"Override: percent of income for housing plus all debts.","schema":{"type":"number"}},{"name":"test_buffer","in":"query","required":false,"description":"Override: extra rate points added for the stress test.","schema":{"type":"number","minimum":0,"maximum":10}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}},"/scientific-calculator":{"get":{"tags":["Calculators"],"summary":"Scientific Calculator","description":"Evaluate an expression: + - * / ^ ( ) % ! (factorial), the constants pi, e and ans, and sin, cos, tan, asin, acos, atan, ln, log (base 10), sqrt, cbrt, abs, exp. Implicit multiplication works: 2(3+4), 3pi. No eval is used.","operationId":"scientific_calculator","parameters":[{"name":"expression","in":"query","required":true,"description":"The calculation, e.g. 2(3+4)^2/sin(30). URL-encode + as %2B. Example: 2(3+4)^2","schema":{"type":"string","maxLength":500}},{"name":"angle","in":"query","required":false,"description":"deg or rad for the trigonometry functions.","schema":{"type":"string","enum":["deg","rad"],"default":"deg"}},{"name":"ans","in":"query","required":false,"description":"Value of the constant `ans` (the previous answer).","schema":{"type":"number","default":0}},{"name":"format","in":"query","required":false,"description":"`text` returns the plain result instead of JSON (text results only).","schema":{"type":"string","enum":["json","text"]}}],"responses":{"200":{"description":"The result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"A parameter is missing or wrong. The body says which one."},"413":{"description":"A text parameter is longer than the limit."}}}}}}