{"openapi":"3.1.0","info":{"title":"no.tools API","version":"1.0.0","description":"Free API for the tools on no.tools. Without a key: 30 requests per minute per IP address. With an API key (Authorization: Bearer <key>): 600 requests per minute. Request data is processed in memory only and never stored or logged.","contact":{"email":"hi@no.tools","url":"https://no.tools/en/api"}},"servers":[{"url":"https://api.no.tools"}],"security":[{},{"bearer":[]}],"tags":[{"name":"Base64 Encode / Decode"},{"name":"BMI Calculator"},{"name":"Color Converter & Contrast Checker"},{"name":"Compound Interest & Savings Calculator"},{"name":"Cron Expression Explainer"},{"name":"Currency Converter"},{"name":"YAML ↔ JSON ↔ CSV Converter"},{"name":"Date Calculator"},{"name":"DNS Lookup"},{"name":"EXIF Viewer & Metadata Remover"},{"name":"Hash Generator"},{"name":"JSON Formatter & Validator"},{"name":"JWT Decoder"},{"name":"Lorem Ipsum Generator"},{"name":"Number Base & Roman Numeral Converter"},{"name":"Password Generator"},{"name":"Percentage & VAT Calculator"},{"name":"QR Code Generator"},{"name":"Random Generator"},{"name":"Regex Tester"},{"name":"URL Slug Generator"},{"name":"SQL Formatter"},{"name":"IP Subnet Calculator"},{"name":"Text ↔ Hex / Binary / ASCII"},{"name":"Text Compare (Diff)"},{"name":"Unix Timestamp Converter"},{"name":"Unit Converter"},{"name":"URL Encode / Decode"},{"name":"UUID / ULID Generator"},{"name":"Word & Character Counter"}],"paths":{"/v1/base64/encode":{"post":{"operationId":"base64.encode","tags":["Base64 Encode / Decode"],"summary":"Encode text as Base64","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","description":"Text to encode (UTF-8)"},"urlSafe":{"default":false,"description":"Use the URL-safe alphabet (base64url) without padding","type":"boolean"}},"required":["text"]},"example":{"text":"Hello, no.tools!"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"base64":{"type":"string"}},"required":["base64"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/base64/decode":{"post":{"operationId":"base64.decode","tags":["Base64 Encode / Decode"],"summary":"Decode Base64 to text","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"base64":{"type":"string","description":"Standard or URL-safe Base64; whitespace and missing padding are allowed"}},"required":["base64"]},"example":{"base64":"SGVsbG8sIG5vLnRvb2xzIQ=="}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/bmi-calculator/calculate":{"post":{"operationId":"bmi-calculator.calculate","tags":["BMI Calculator"],"summary":"Calculate the BMI (adults)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"weightKg":{"type":"number","exclusiveMinimum":0,"maximum":700,"description":"Body weight in kilograms"},"heightCm":{"type":"number","minimum":30,"maximum":300,"description":"Height in centimeters"}},"required":["weightKg","heightCm"]},"example":{"weightKg":70,"heightCm":175}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bmi":{"type":"number","description":"kg/m², rounded to one decimal"},"category":{"type":"string","enum":["severe-thinness","moderate-thinness","mild-thinness","normal","pre-obese","obese-1","obese-2","obese-3"],"description":"WHO classification for adults"},"normalWeightKg":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false,"description":"Weight range for a BMI of 18.5–24.9 at this height"}},"required":["bmi","category","normalWeightKg"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/color-converter/convert":{"post":{"operationId":"color-converter.convert","tags":["Color Converter & Contrast Checker"],"summary":"Convert a color to all formats","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"color":{"type":"string","minLength":1,"maxLength":100,"description":"Any CSS color: #hex, rgb(), hsl(), hwb(), oklch() or a color name"},"scale":{"default":false,"description":"Also return tints and shades (12 steps, light to dark)","type":"boolean"}},"required":["color"]},"example":{"color":"rebeccapurple"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"hex":{"type":"string"},"rgb":{"type":"string"},"hsl":{"type":"string"},"hsv":{"type":"string"},"oklch":{"type":"string"},"cmyk":{"type":"string","description":"Simple device-independent approximation"},"rgba":{"type":"object","properties":{"r":{"type":"number"},"g":{"type":"number"},"b":{"type":"number"},"a":{"type":"number"}},"required":["r","g","b","a"],"additionalProperties":false},"scale":{"type":"array","items":{"type":"string"}}},"required":["hex","rgb","hsl","hsv","oklch","cmyk","rgba"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/color-converter/contrast":{"post":{"operationId":"color-converter.contrast","tags":["Color Converter & Contrast Checker"],"summary":"Check WCAG contrast","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"foreground":{"type":"string","minLength":1,"maxLength":100,"description":"Text color"},"background":{"type":"string","minLength":1,"maxLength":100,"description":"Background color"}},"required":["foreground","background"]},"example":{"foreground":"#2563eb","background":"#ffffff"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ratio":{"type":"number","description":"Contrast ratio, e.g. 4.5 for 4.5:1"},"wcag":{"type":"object","properties":{"aaNormal":{"type":"boolean"},"aaLarge":{"type":"boolean"},"aaaNormal":{"type":"boolean"},"aaaLarge":{"type":"boolean"},"ui":{"type":"boolean"}},"required":["aaNormal","aaLarge","aaaNormal","aaaLarge","ui"],"additionalProperties":false}},"required":["ratio","wcag"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/compound-interest/simulate":{"post":{"operationId":"compound-interest.simulate","tags":["Compound Interest & Savings Calculator"],"summary":"Simulate a savings plan with compound interest","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"initial":{"default":0,"description":"Starting capital","type":"number","minimum":0,"maximum":1000000000000},"monthly":{"default":0,"description":"Contribution at the end of each month","type":"number","minimum":0,"maximum":1000000000000},"rate":{"type":"number","minimum":-50,"maximum":100,"description":"Nominal interest rate per year in percent"},"years":{"type":"integer","minimum":1,"maximum":100},"compounding":{"default":"monthly","type":"string","enum":["monthly","yearly"]},"increase":{"default":0,"description":"Yearly increase of the monthly contribution in percent","type":"number","minimum":0,"maximum":100}},"required":["rate","years"]},"example":{"initial":1000,"monthly":100,"rate":5,"years":3}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"final":{"type":"number"},"totalContributions":{"type":"number"},"totalInterest":{"type":"number"},"rows":{"type":"array","items":{"type":"object","properties":{"year":{"type":"number"},"contributions":{"type":"number"},"interest":{"type":"number"},"balance":{"type":"number"},"totalContributions":{"type":"number"},"totalInterest":{"type":"number"}},"required":["year","contributions","interest","balance","totalContributions","totalInterest"],"additionalProperties":false}}},"required":["final","totalContributions","totalInterest","rows"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cron-expression/explain":{"post":{"operationId":"cron-expression.explain","tags":["Cron Expression Explainer"],"summary":"Explain a cron expression and list next runs","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expression":{"type":"string","minLength":1,"maxLength":200,"description":"5-field cron expression or a macro like @daily"},"count":{"default":5,"description":"Number of upcoming runs","type":"integer","minimum":1,"maximum":50},"from":{"description":"Start time (ISO 8601); default: now","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"locale":{"default":"en","description":"Language of the description","type":"string","enum":["en","de"]}},"required":["expression"]},"example":{"expression":"*/15 9-17 * * 1-5","count":3,"from":"2026-10-15T08:00:00Z"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expression":{"type":"string","description":"Normalized 5-field expression"},"description":{"type":"string"},"nextRuns":{"type":"array","items":{"type":"string"},"description":"Upcoming run times in UTC (ISO 8601)"}},"required":["expression","description","nextRuns"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/currency-converter/convert":{"post":{"operationId":"currency-converter.convert","tags":["Currency Converter"],"summary":"Convert an amount between currencies","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"default":1,"type":"number"},"from":{"description":"Source currency (ISO 4217)","type":"string","pattern":"^[A-Za-z]{3}$"},"to":{"anyOf":[{"type":"string","pattern":"^[A-Za-z]{3}$"},{"minItems":1,"maxItems":40,"type":"array","items":{"type":"string","pattern":"^[A-Za-z]{3}$"}}],"description":"Target currency or list of currencies"}},"required":["from","to"]},"example":{"amount":100,"from":"EUR","to":["USD","CHF"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"number"},"from":{"type":"string"},"date":{"type":"string","description":"Date of the reference rates"},"results":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"rate":{"type":"number"},"value":{"type":"number"}},"required":["currency","rate","value"],"additionalProperties":false}},"source":{"type":"string"}},"required":["amount","from","date","results","source"],"additionalProperties":false},"example":{"amount":100,"from":"EUR","date":"2026-10-14","results":[{"currency":"USD","rate":1.1195,"value":111.95},{"currency":"CHF","rate":0.933,"value":93.3}],"source":"European Central Bank reference rates via frankfurter.dev"}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/currency-converter/rates":{"post":{"operationId":"currency-converter.rates","tags":["Currency Converter"],"summary":"Get the current reference rates","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"base":{"description":"Base currency","type":"string","pattern":"^[A-Za-z]{3}$"}}},"example":{"base":"EUR"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"base":{"type":"string"},"date":{"type":"string"},"rates":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"source":{"type":"string"}},"required":["base","date","rates","source"],"additionalProperties":false},"example":{"base":"EUR","date":"2026-10-14","rates":{"CHF":0.933,"EUR":1,"GBP":0.84385,"USD":1.1195},"source":"European Central Bank reference rates via frankfurter.dev"}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/data-converter/convert":{"post":{"operationId":"data-converter.convert","tags":["YAML ↔ JSON ↔ CSV Converter"],"summary":"Convert between JSON, YAML and CSV","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"string","description":"Source data as text"},"from":{"default":"auto","type":"string","enum":["auto","json","yaml","csv"]},"to":{"type":"string","enum":["json","yaml","csv"]},"indent":{"default":2,"description":"Indentation for JSON/YAML","type":"integer","minimum":0,"maximum":8},"delimiter":{"default":"auto","description":"CSV delimiter (auto = detect when reading, comma when writing)","type":"string","enum":["auto","comma","semicolon","tab","pipe"]},"header":{"default":true,"description":"The first CSV row contains column names","type":"boolean"}},"required":["input","to"]},"example":{"input":"name;city\nAnna;Berlin\nBen;Hamburg","to":"json"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"output":{"type":"string"},"from":{"type":"string","enum":["json","yaml","csv"],"description":"Detected or given source format"}},"required":["output","from"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/date-calculator/difference":{"post":{"operationId":"date-calculator.difference","tags":["Date Calculator"],"summary":"Period between two dates","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"includeEnd":{"default":false,"description":"Count the end date as a full day","type":"boolean"}},"required":["start","end"]},"example":{"start":"2026-01-01","end":"2026-12-24"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"days":{"type":"number"},"direction":{"type":"string","enum":["forward","backward"],"description":"backward if end is before start"},"weeks":{"type":"number"},"restDays":{"type":"number"},"years":{"type":"number"},"months":{"type":"number"},"monthDays":{"type":"number","description":"Remaining days after whole years and months"},"workdays":{"type":"number","description":"Monday–Friday, public holidays not considered"}},"required":["days","direction","weeks","restDays","years","months","monthDays","workdays"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/date-calculator/add":{"post":{"operationId":"date-calculator.add","tags":["Date Calculator"],"summary":"Add or subtract time from a date","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"amount":{"type":"integer","minimum":-100000,"maximum":100000,"description":"Negative values subtract"},"unit":{"type":"string","enum":["days","weeks","months","years","workdays"]}},"required":["date","amount","unit"]},"example":{"date":"2026-10-15","amount":10,"unit":"workdays"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"date":{"type":"string"},"weekday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"ISO weekday, 1 = Monday … 7 = Sunday"},"isoWeek":{"type":"object","properties":{"year":{"type":"number"},"week":{"type":"number"}},"required":["year","week"],"additionalProperties":false}},"required":["date","weekday","isoWeek"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/dns-lookup/lookup":{"post":{"operationId":"dns-lookup.lookup","tags":["DNS Lookup"],"summary":"Query DNS records","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":300,"description":"Domain, URL or e-mail address; an IP address triggers a reverse (PTR) lookup"},"types":{"default":["A","AAAA","CNAME","MX","NS","TXT","SOA","CAA"],"description":"Record types to query","minItems":1,"maxItems":13,"type":"array","items":{"type":"string","enum":["A","AAAA","CNAME","MX","NS","TXT","SOA","CAA","SRV","PTR","DS","DNSKEY","HTTPS"]}},"resolver":{"default":"cloudflare","description":"DNS-over-HTTPS resolver","type":"string","enum":["cloudflare","google"]}},"required":["name"]},"example":{"name":"no.tools","types":["A"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","description":"Queried name (punycode, or in-addr.arpa / ip6.arpa for IPs)"},"results":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"string","description":"NOERROR, NXDOMAIN, SERVFAIL …"},"authenticated":{"type":"boolean","description":"DNSSEC-validated"},"records":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"ttl":{"type":"number"},"data":{"type":"string"}},"required":["name","type","ttl","data"],"additionalProperties":false}}},"required":["type","status","authenticated","records"],"additionalProperties":false}}},"required":["name","results"],"additionalProperties":false},"example":{"name":"no.tools","results":[{"type":"A","status":"NOERROR","authenticated":false,"records":[{"name":"no.tools","type":"A","ttl":300,"data":"172.67.168.128"},{"name":"no.tools","type":"A","ttl":300,"data":"104.21.26.196"}]}]}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/exif-viewer/read":{"post":{"operationId":"exif-viewer.read","tags":["EXIF Viewer & Metadata Remover"],"summary":"Read photo metadata (EXIF, GPS, XMP …)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"dataBase64":{"type":"string","minLength":1,"description":"Image file (JPEG, PNG or WebP) as Base64"}},"required":["dataBase64"]},"example":{"dataBase64":"/9j/4QEhRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAAyAEQAAIAAAAHAAAAzodpAAQAAAABAAAAUIglAAQAAAABAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZADAAIAAAAUAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAQACAAAAAk4AAAAAAgAFAAAAAwAAAOkAAwACAAAAAkUAAAAABAAFAAAAAwAAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDYW5vbgBFT1MgUjYAMjAyNjowNzoxNCAxODozMDowMAAAAAA1AAAAAQAAACEAAAABAAAAAAAAAAEAAAAJAAAAAQAAADsAAAABAAAAAAAAAAH/wAARCAACAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwAbGxsbGxsvGxsvQi8vL0JZQkJCQllwWVlZWVlwiHBwcHBwcIiIiIiIiIiIo6Ojo6Ojvr6+vr7V1dXV1dXV1dXV/9sAQwEhIyM2MjZdMjJd35d8l9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f/90ABAAB/9oADAMBAAIRAxEAPwDpaKKKAP/Z"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"format":{"type":"string","enum":["jpeg","png","webp"]},"hasMetadata":{"type":"boolean","description":"false if nothing but the orientation is present"},"gps":{"anyOf":[{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"additionalProperties":false},{"type":"null"}]},"tags":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"group":{"type":"string"},"value":{"type":"string"}},"required":["key","group","value"],"additionalProperties":false},"description":"The most relevant EXIF tags"},"otherTags":{"type":"number","description":"Number of further EXIF entries"},"thumbnail":{"type":"boolean","description":"Contains an embedded preview image"},"xmp":{"type":"boolean"},"iptc":{"type":"boolean"},"comments":{"type":"array","items":{"type":"string"}},"texts":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"description":"PNG text chunks"},"other":{"type":"array","items":{"type":"string"},"description":"Other removable blocks"}},"required":["format","hasMetadata","gps","tags","otherTags","thumbnail","xmp","iptc","comments","texts","other"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/exif-viewer/strip":{"post":{"operationId":"exif-viewer.strip","tags":["EXIF Viewer & Metadata Remover"],"summary":"Remove all metadata losslessly","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"dataBase64":{"type":"string","minLength":1,"description":"Image file (JPEG, PNG or WebP) as Base64"}},"required":["dataBase64"]},"example":{"dataBase64":"/9j/4QEhRXhpZgAATU0AKgAAAAgABAEPAAIAAAAGAAAAyAEQAAIAAAAHAAAAzodpAAQAAAABAAAAUIglAAQAAAABAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZADAAIAAAAUAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAQACAAAAAk4AAAAAAgAFAAAAAwAAAOkAAwACAAAAAkUAAAAABAAFAAAAAwAAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDYW5vbgBFT1MgUjYAMjAyNjowNzoxNCAxODozMDowMAAAAAA1AAAAAQAAACEAAAABAAAAAAAAAAEAAAAJAAAAAQAAADsAAAABAAAAAAAAAAH/wAARCAACAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwAbGxsbGxsvGxsvQi8vL0JZQkJCQllwWVlZWVlwiHBwcHBwcIiIiIiIiIiIo6Ojo6Ojvr6+vr7V1dXV1dXV1dXV/9sAQwEhIyM2MjZdMjJd35d8l9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f/90ABAAB/9oADAMBAAIRAxEAPwDpaKKKAP/Z"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"dataBase64":{"type":"string","description":"Cleaned file; image data unchanged, only the orientation is kept"},"format":{"type":"string","enum":["jpeg","png","webp"]},"bytesBefore":{"type":"number"},"bytesAfter":{"type":"number"}},"required":["dataBase64","format","bytesBefore","bytesAfter"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/hash-generator/hash":{"post":{"operationId":"hash-generator.hash","tags":["Hash Generator"],"summary":"Hash text or binary data","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"description":"Text to hash (UTF-8). Provide either text or dataBase64.","type":"string"},"dataBase64":{"description":"Binary data as Base64, e.g. a file’s content","type":"string"},"algorithms":{"default":["MD5","SHA-1","SHA-256","SHA-384","SHA-512"],"description":"Algorithms to calculate","minItems":1,"type":"array","items":{"type":"string","enum":["MD5","SHA-1","SHA-256","SHA-384","SHA-512"]}},"encoding":{"default":"hex","description":"Output encoding of the digests","type":"string","enum":["hex","base64"]},"uppercase":{"default":false,"description":"Uppercase hex digits","type":"boolean"}}},"example":{"text":"no.tools","algorithms":["SHA-256","MD5"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"hashes":{"type":"object","propertyNames":{"type":"string","enum":["MD5","SHA-1","SHA-256","SHA-384","SHA-512"]},"additionalProperties":{"type":"string"}}},"required":["hashes"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/json-formatter/format":{"post":{"operationId":"json-formatter.format","tags":["JSON Formatter & Validator"],"summary":"Pretty-print JSON","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"json":{"type":"string","description":"JSON document as text"},"indent":{"default":2,"description":"Indentation: 2, 4 or \"tab\"","anyOf":[{"type":"number","const":2},{"type":"number","const":4},{"type":"string","const":"tab"}]},"sortKeys":{"default":false,"description":"Sort object keys alphabetically (recursively)","type":"boolean"}},"required":["json"]},"example":{"json":"{\"name\":\"no.tools\",\"tools\":31,\"tags\":[\"free\",\"private\"]}","indent":2}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"json":{"type":"string"},"stats":{"type":"object","properties":{"type":{"type":"string"},"keys":{"type":"number"},"depth":{"type":"number"}},"required":["type","keys","depth"],"additionalProperties":false}},"required":["json","stats"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/json-formatter/minify":{"post":{"operationId":"json-formatter.minify","tags":["JSON Formatter & Validator"],"summary":"Minify JSON","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"json":{"type":"string","description":"JSON document as text"},"sortKeys":{"default":false,"description":"Sort object keys alphabetically (recursively)","type":"boolean"}},"required":["json"]},"example":{"json":"{\n  \"b\": 1,\n  \"a\": [1, 2]\n}","sortKeys":true}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"json":{"type":"string"}},"required":["json"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/json-formatter/validate":{"post":{"operationId":"json-formatter.validate","tags":["JSON Formatter & Validator"],"summary":"Validate JSON","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"json":{"type":"string","description":"JSON document as text"}},"required":["json"]},"example":{"json":"{\"a\": 1,}"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"valid":{"type":"boolean"},"error":{"type":"object","properties":{"message":{"type":"string"},"line":{"type":"number"},"column":{"type":"number"}},"required":["message"],"additionalProperties":false}},"required":["valid"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/jwt-decoder/decode":{"post":{"operationId":"jwt-decoder.decode","tags":["JWT Decoder"],"summary":"Decode a JWT (without verification)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":100000,"description":"JWT (a leading \"Bearer \" is ignored)"}},"required":["token"]},"example":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"header":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"anyOf":[{"type":"string","enum":["valid","expired","not-yet-valid"]},{"type":"null"}],"description":"Based on exp/nbf; null if neither is set"},"times":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"exp, nbf, iat and auth_time as ISO 8601"}},"required":["header","payload","status","times"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/jwt-decoder/verify":{"post":{"operationId":"jwt-decoder.verify","tags":["JWT Decoder"],"summary":"Verify a JWT signature","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"token":{"type":"string","minLength":1,"maxLength":100000,"description":"JWT (a leading \"Bearer \" is ignored)"},"key":{"type":"string","minLength":1,"maxLength":100000,"description":"HMAC secret, PEM public key, JWK or JWKS (matched by kid)"},"secretEncoding":{"default":"utf8","description":"Encoding of an HMAC secret","type":"string","enum":["utf8","base64"]}},"required":["token","key"]},"example":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","key":"your-256-bit-secret"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"valid":{"type":"boolean","description":"Signature matches; expiry is reported separately in status"},"header":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"anyOf":[{"type":"string","enum":["valid","expired","not-yet-valid"]},{"type":"null"}],"description":"Based on exp/nbf; null if neither is set"},"times":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"exp, nbf, iat and auth_time as ISO 8601"}},"required":["valid","header","payload","status","times"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/lorem-ipsum/generate":{"post":{"operationId":"lorem-ipsum.generate","tags":["Lorem Ipsum Generator"],"summary":"Generate Lorem Ipsum placeholder text","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"unit":{"default":"paragraphs","type":"string","enum":["paragraphs","sentences","words"]},"count":{"default":3,"description":"Up to 200 paragraphs/sentences or 5000 words","type":"integer","minimum":1,"maximum":5000},"startClassic":{"default":true,"description":"Start with “Lorem ipsum dolor sit amet …”","type":"boolean"},"html":{"default":false,"description":"Wrap paragraphs in <p> tags","type":"boolean"}}},"example":{"unit":"sentences","count":2}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/number-base-converter/convert":{"post":{"operationId":"number-base-converter.convert","tags":["Number Base & Roman Numeral Converter"],"summary":"Convert integers between bases 2–36","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":10000,"description":"Integer as text; sign, separators and 0x/0b/0o prefixes are allowed"},"base":{"default":10,"description":"Base of the input","type":"integer","minimum":2,"maximum":36},"to":{"default":[2,8,10,16],"description":"Target bases","minItems":1,"maxItems":35,"type":"array","items":{"type":"integer","minimum":2,"maximum":36}},"uppercase":{"default":false,"type":"boolean"}},"required":["value"]},"example":{"value":"ff","base":16}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"results":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Base → value"},"twosComplement":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","null"]},"description":"Bit width (8/16/32/64) → hex pattern, null if it does not fit"}},"required":["results","twosComplement"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/number-base-converter/roman":{"post":{"operationId":"number-base-converter.roman","tags":["Number Base & Roman Numeral Converter"],"summary":"Convert Roman numerals","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"value":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","minLength":1,"maxLength":20}],"description":"A number (1–3999) or a Roman numeral"}},"required":["value"]},"example":{"value":"MCMXCIV"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"roman":{"type":"string"}},"required":["number","roman"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/password-generator/password":{"post":{"operationId":"password-generator.password","tags":["Password Generator"],"summary":"Generate random passwords","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"length":{"default":20,"description":"Length (4–128)","type":"integer","minimum":4,"maximum":128},"lowercase":{"default":true,"type":"boolean"},"uppercase":{"default":true,"type":"boolean"},"digits":{"default":true,"type":"boolean"},"symbols":{"default":true,"type":"boolean"},"excludeAmbiguous":{"default":false,"description":"Exclude look-alikes (I l 1 O 0 o)","type":"boolean"},"count":{"default":1,"description":"Number of passwords (1–50)","type":"integer","minimum":1,"maximum":50}}},"example":{"length":16,"count":2}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"passwords":{"type":"array","items":{"type":"string"}},"entropyBits":{"type":"number","description":"Entropy of each password in bits"},"strength":{"type":"string","enum":["weak","fair","strong","veryStrong"]},"crackSeconds":{"type":"number","description":"Average offline brute-force time at 10 billion guesses per second"}},"required":["passwords","entropyBits","strength","crackSeconds"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/password-generator/passphrase":{"post":{"operationId":"password-generator.passphrase","tags":["Password Generator"],"summary":"Generate passphrases","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"words":{"default":5,"description":"Number of words (3–12)","type":"integer","minimum":3,"maximum":12},"separator":{"default":"-","type":"string","maxLength":3},"capitalize":{"default":false,"type":"boolean"},"includeNumber":{"default":false,"description":"Append a digit to one random word","type":"boolean"},"count":{"default":1,"description":"Number of passwords (1–50)","type":"integer","minimum":1,"maximum":50}}},"example":{"words":5,"capitalize":true}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"passwords":{"type":"array","items":{"type":"string"}},"entropyBits":{"type":"number","description":"Entropy of each password in bits"},"strength":{"type":"string","enum":["weak","fair","strong","veryStrong"]},"crackSeconds":{"type":"number","description":"Average offline brute-force time at 10 billion guesses per second"}},"required":["passwords","entropyBits","strength","crackSeconds"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/percent-calculator/of":{"post":{"operationId":"percent-calculator.of","tags":["Percentage & VAT Calculator"],"summary":"p % of a value","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"percent":{"type":"number"},"base":{"type":"number"}},"required":["percent","base"]},"example":{"percent":20,"base":150}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"result":{"type":"number"}},"required":["result"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/percent-calculator/ratio":{"post":{"operationId":"percent-calculator.ratio","tags":["Percentage & VAT Calculator"],"summary":"What percent is part of whole?","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"part":{"type":"number"},"whole":{"type":"number"}},"required":["part","whole"]},"example":{"part":30,"whole":120}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"result":{"type":"number"}},"required":["result"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/percent-calculator/base":{"post":{"operationId":"percent-calculator.base","tags":["Percentage & VAT Calculator"],"summary":"Find the base value","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"part":{"type":"number","description":"The known part"},"percent":{"type":"number","description":"Which percentage the part is"}},"required":["part","percent"]},"example":{"part":30,"percent":20}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"result":{"type":"number"}},"required":["result"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/percent-calculator/change":{"post":{"operationId":"percent-calculator.change","tags":["Percentage & VAT Calculator"],"summary":"Percentage change","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"from":{"type":"number"},"to":{"type":"number"}},"required":["from","to"]},"example":{"from":80,"to":100}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"result":{"type":"number"}},"required":["result"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/percent-calculator/apply":{"post":{"operationId":"percent-calculator.apply","tags":["Percentage & VAT Calculator"],"summary":"Add or subtract a percentage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"base":{"type":"number"},"percent":{"type":"number","description":"Negative for discounts, e.g. -15"}},"required":["base","percent"]},"example":{"base":200,"percent":-15}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"result":{"type":"number"}},"required":["result"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/percent-calculator/vat":{"post":{"operationId":"percent-calculator.vat","tags":["Percentage & VAT Calculator"],"summary":"Net ↔ gross with VAT","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"amount":{"type":"number"},"rate":{"default":19,"description":"VAT rate in percent","type":"number","minimum":0,"maximum":100},"direction":{"default":"net-to-gross","type":"string","enum":["net-to-gross","gross-to-net"]}},"required":["amount"]},"example":{"amount":119,"direction":"gross-to-net"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"net":{"type":"number"},"vat":{"type":"number"},"gross":{"type":"number"}},"required":["net","vat","gross"],"additionalProperties":false,"description":"Rounded to cents"}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/qr-code-generator/create":{"post":{"operationId":"qr-code-generator.create","tags":["QR Code Generator"],"summary":"Create a QR code as SVG","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"content":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string","minLength":1,"description":"Link or any text"}},"required":["type","text"]},{"type":"object","properties":{"type":{"type":"string","const":"wifi"},"ssid":{"type":"string","minLength":1},"password":{"default":"","type":"string"},"security":{"default":"WPA","type":"string","enum":["WPA","WEP","nopass"]},"hidden":{"default":false,"type":"boolean"}},"required":["type","ssid"]},{"type":"object","properties":{"type":{"type":"string","const":"contact"},"firstName":{"default":"","type":"string"},"lastName":{"default":"","type":"string"},"organization":{"default":"","type":"string"},"title":{"default":"","type":"string"},"phone":{"default":"","type":"string"},"email":{"default":"","type":"string"},"website":{"default":"","type":"string"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","const":"email"},"to":{"type":"string","minLength":1},"subject":{"default":"","type":"string"},"body":{"default":"","type":"string"}},"required":["type","to"]}],"description":"What the QR code contains: text/link, Wi-Fi credentials, contact (vCard) or e-mail"},"errorCorrection":{"default":"M","description":"Error correction level (7 %, 15 %, 25 %, 30 %)","type":"string","enum":["L","M","Q","H"]},"margin":{"default":2,"description":"Quiet zone in modules","type":"integer","minimum":0,"maximum":16},"dark":{"default":"#000000","description":"Foreground color","type":"string","pattern":"^#([0-9a-f]{6}|[0-9a-f]{8})$"},"light":{"default":"#ffffff","description":"Background color","type":"string","pattern":"^#([0-9a-f]{6}|[0-9a-f]{8})$"}},"required":["content"]},"example":{"content":{"type":"text","text":"https://no.tools"}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"payload":{"type":"string","description":"The encoded string"},"svg":{"type":"string","description":"SVG markup"}},"required":["payload","svg"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/qr-code-generator/text":{"post":{"operationId":"qr-code-generator.text","tags":["QR Code Generator"],"summary":"QR code from text or a link","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","minLength":1,"description":"Link or any text"},"errorCorrection":{"default":"M","description":"Error correction level (7 %, 15 %, 25 %, 30 %)","type":"string","enum":["L","M","Q","H"]},"margin":{"default":2,"description":"Quiet zone in modules","type":"integer","minimum":0,"maximum":16},"dark":{"default":"#000000","description":"Foreground color","type":"string","pattern":"^#([0-9a-f]{6}|[0-9a-f]{8})$"},"light":{"default":"#ffffff","description":"Background color","type":"string","pattern":"^#([0-9a-f]{6}|[0-9a-f]{8})$"}},"required":["text"]},"example":{"text":"https://no.tools"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"svg":{"type":"string","description":"SVG markup"}},"required":["svg"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/random-generator/numbers":{"post":{"operationId":"random-generator.numbers","tags":["Random Generator"],"summary":"Random integers","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"min":{"default":1,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"default":100,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"default":1,"type":"integer","minimum":1,"maximum":10000},"unique":{"default":false,"description":"No duplicates (e.g. lottery numbers)","type":"boolean"},"sort":{"default":false,"type":"boolean"}}},"example":{"min":1,"max":49,"count":6,"unique":true,"sort":true}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"numbers":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["numbers"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/random-generator/dice":{"post":{"operationId":"random-generator.dice","tags":["Random Generator"],"summary":"Roll dice","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"default":1,"type":"integer","minimum":1,"maximum":100},"sides":{"default":6,"type":"integer","minimum":2,"maximum":1000}}},"example":{"count":2,"sides":6}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"rolls":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"sum":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["rolls","sum"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/random-generator/coins":{"post":{"operationId":"random-generator.coins","tags":["Random Generator"],"summary":"Flip coins","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"count":{"default":1,"type":"integer","minimum":1,"maximum":1000}}},"example":{"count":3}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"flips":{"type":"array","items":{"type":"string","enum":["heads","tails"]}},"heads":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tails":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["flips","heads","tails"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/random-generator/pick":{"post":{"operationId":"random-generator.pick","tags":["Random Generator"],"summary":"Draw entries from a list","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"string","maxLength":1000},"description":"Entries, e.g. names"},"count":{"default":1,"type":"integer","minimum":1,"maximum":10000}},"required":["items"]},"example":{"items":["Anna","Ben","Cara","David"],"count":1}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"picked":{"type":"array","items":{"type":"string"}}},"required":["picked"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/random-generator/shuffle":{"post":{"operationId":"random-generator.shuffle","tags":["Random Generator"],"summary":"Shuffle a list","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"string","maxLength":1000},"description":"Entries, e.g. names"}},"required":["items"]},"example":{"items":["Anna","Ben","Cara","David"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/random-generator/teams":{"post":{"operationId":"random-generator.teams","tags":["Random Generator"],"summary":"Split a list into teams","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"minItems":1,"maxItems":10000,"type":"array","items":{"type":"string","maxLength":1000},"description":"Entries, e.g. names"},"teams":{"default":2,"type":"integer","minimum":1,"maximum":1000}},"required":["items"]},"example":{"items":["Anna","Ben","Cara","David","Emil"],"teams":2}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"teams":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Team sizes differ by at most one"}},"required":["teams"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/regex-tester/test":{"post":{"operationId":"regex-tester.test","tags":["Regex Tester"],"summary":"Run a regular expression (JavaScript)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"pattern":{"type":"string","maxLength":1000,"description":"Pattern without surrounding slashes"},"flags":{"default":"g","type":"string","pattern":"^[dgimsuvy]*$"},"text":{"type":"string","maxLength":100000},"replacement":{"description":"Optional replacement ($1, $<name>, $&)","type":"string","maxLength":10000},"limit":{"default":100,"description":"Maximum number of matches returned","type":"integer","minimum":1,"maximum":1000}},"required":["pattern","text"]},"example":{"pattern":"(?<year>\\d{4})-(\\d{2})","text":"Releases: 2025-10 and 2026-03","replacement":"$2/$<year>"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"matches":{"type":"array","items":{"type":"object","properties":{"index":{"type":"number"},"end":{"type":"number"},"text":{"type":"string"},"groups":{"type":"array","items":{"type":["string","null"]}},"named":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","null"]}}},"required":["index","end","text","groups","named"],"additionalProperties":false}},"truncated":{"type":"boolean"},"replaced":{"type":"string"}},"required":["matches","truncated"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/slug-generator/slugify":{"post":{"operationId":"slug-generator.slugify","tags":["URL Slug Generator"],"summary":"Create a URL slug","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":10000,"description":"Title or any text"},"separator":{"default":"-","type":"string","enum":["-","_","."]},"lowercase":{"default":true,"type":"boolean"},"german":{"default":true,"description":"German transliteration (ä → ae, ß → ss) instead of dropping accents","type":"boolean"},"maxLength":{"default":0,"description":"Maximum length, cut at a word boundary (0 = unlimited)","type":"integer","minimum":0,"maximum":1000}},"required":["text"]},"example":{"text":"Größe & Maße für Ärzte!"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/sql-formatter/format":{"post":{"operationId":"sql-formatter.format","tags":["SQL Formatter"],"summary":"Format SQL","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sql":{"type":"string","minLength":1,"maxLength":500000,"description":"One or more SQL statements"},"dialect":{"default":"sql","type":"string","enum":["sql","postgresql","mysql","mariadb","sqlite","tsql","plsql","bigquery","snowflake","redshift","spark","duckdb","clickhouse","trino","db2","hive"]},"keywordCase":{"default":"upper","type":"string","enum":["upper","lower","preserve"]},"indent":{"default":2,"description":"Indentation: 2, 4 or \"tab\"","anyOf":[{"type":"number","const":2},{"type":"number","const":4},{"type":"string","const":"tab"}]}},"required":["sql"]},"example":{"sql":"select id, name from users where active = true order by name","dialect":"postgresql"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sql":{"type":"string"}},"required":["sql"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/sql-formatter/minify":{"post":{"operationId":"sql-formatter.minify","tags":["SQL Formatter"],"summary":"Minify SQL to one line","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sql":{"type":"string","minLength":1,"maxLength":500000,"description":"One or more SQL statements"}},"required":["sql"]},"example":{"sql":"SELECT id,\n  name -- display name\nFROM users"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"sql":{"type":"string"}},"required":["sql"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/subnet-calculator/calculate":{"post":{"operationId":"subnet-calculator.calculate","tags":["IP Subnet Calculator"],"summary":"Calculate an IPv4 subnet","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":60,"description":"e.g. \"192.168.1.10/24\" or \"192.168.1.10 255.255.255.0\""},"splitPrefix":{"description":"Optionally split the network into subnets with this prefix","type":"integer","minimum":0,"maximum":32},"limit":{"default":64,"description":"Maximum number of subnets returned when splitting","type":"integer","minimum":1,"maximum":256}},"required":["address"]},"example":{"address":"192.168.1.10/24","splitPrefix":26}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cidr":{"type":"string"},"network":{"type":"string"},"broadcast":{"type":"string"},"netmask":{"type":"string"},"wildcard":{"type":"string"},"firstHost":{"type":"string"},"lastHost":{"type":"string"},"total":{"type":"number"},"usable":{"type":"number"},"address":{"type":"string"},"type":{"type":"string","description":"private, public, loopback, linkLocal, cgnat, multicast, reserved, unspecified, documentation"},"class":{"type":"string"},"binary":{"type":"object","properties":{"address":{"type":"string"},"netmask":{"type":"string"}},"required":["address","netmask"],"additionalProperties":false},"reverseDns":{"type":"string"},"split":{"type":"object","properties":{"total":{"type":"number"},"subnets":{"type":"array","items":{"type":"object","properties":{"cidr":{"type":"string"},"network":{"type":"string"},"broadcast":{"type":"string"},"netmask":{"type":"string"},"wildcard":{"type":"string"},"firstHost":{"type":"string"},"lastHost":{"type":"string"},"total":{"type":"number"},"usable":{"type":"number"}},"required":["cidr","network","broadcast","netmask","wildcard","firstHost","lastHost","total","usable"],"additionalProperties":false}}},"required":["total","subnets"],"additionalProperties":false}},"required":["cidr","network","broadcast","netmask","wildcard","firstHost","lastHost","total","usable","address","type","class","binary","reverseDns"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/text-converter/encode":{"post":{"operationId":"text-converter.encode","tags":["Text ↔ Hex / Binary / ASCII"],"summary":"Text → bytes (hex, binary, decimal, octal)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","description":"Text, encoded as UTF-8"},"format":{"default":"hex","type":"string","enum":["hex","binary","decimal","octal"]},"separator":{"default":" ","type":"string","maxLength":5},"uppercase":{"default":false,"description":"Uppercase hex digits","type":"boolean"}},"required":["text"]},"example":{"text":"Hallo ä"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bytes":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["bytes","count"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/text-converter/decode":{"post":{"operationId":"text-converter.decode","tags":["Text ↔ Hex / Binary / ASCII"],"summary":"Bytes → text","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bytes":{"type":"string","description":"Byte values separated by spaces, commas or colons (hex/binary may be unseparated)"},"format":{"default":"hex","type":"string","enum":["hex","binary","decimal","octal"]}},"required":["bytes"]},"example":{"bytes":"48 61 6c 6c 6f 20 c3 a4"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/text-diff/lines":{"post":{"operationId":"text-diff.lines","tags":["Text Compare (Diff)"],"summary":"Line-by-line diff (side by side)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"original":{"type":"string","maxLength":500000},"changed":{"type":"string","maxLength":500000},"ignoreCase":{"default":false,"type":"boolean"},"ignoreWhitespace":{"default":false,"type":"boolean"}},"required":["original","changed"]},"example":{"original":"one\ntwo\nthree","changed":"one\n2\nthree\nfour"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"identical":{"type":"boolean"},"added":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"removed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rows":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["same","add","del","mod"]},"left":{"type":"object","properties":{"no":{"type":"number"},"text":{"type":"string"},"parts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["same","add","del"]},"value":{"type":"string"}},"required":["type","value"],"additionalProperties":false}}},"required":["no","text"],"additionalProperties":false},"right":{"type":"object","properties":{"no":{"type":"number"},"text":{"type":"string"},"parts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["same","add","del"]},"value":{"type":"string"}},"required":["type","value"],"additionalProperties":false}}},"required":["no","text"],"additionalProperties":false}},"required":["type"],"additionalProperties":false}}},"required":["identical","added","removed","rows"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/text-diff/inline":{"post":{"operationId":"text-diff.inline","tags":["Text Compare (Diff)"],"summary":"Inline diff by words or characters","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"original":{"type":"string","maxLength":500000},"changed":{"type":"string","maxLength":500000},"ignoreCase":{"default":false,"type":"boolean"},"ignoreWhitespace":{"default":false,"type":"boolean"},"granularity":{"default":"words","type":"string","enum":["words","chars"]}},"required":["original","changed"]},"example":{"original":"The quick brown fox","changed":"The quick red fox"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"identical":{"type":"boolean"},"parts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["same","add","del"]},"value":{"type":"string"}},"required":["type","value"],"additionalProperties":false}}},"required":["identical","parts"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/timestamp-converter/convert":{"post":{"operationId":"timestamp-converter.convert","tags":["Unix Timestamp Converter"],"summary":"Convert a Unix timestamp or date","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"description":"Unix timestamp or date string (ISO 8601, RFC 2822); omit for now","anyOf":[{"type":"number"},{"type":"string","maxLength":100}]},"unit":{"default":"auto","description":"Unit of a numeric timestamp","type":"string","enum":["auto","s","ms","us","ns"]},"timeZone":{"default":"UTC","description":"IANA time zone for the \"local\" field, e.g. Europe/Berlin","type":"string","maxLength":64},"locale":{"default":"en","description":"Language of the relative time","type":"string","enum":["en","de"]}}},"example":{"input":1760000000,"timeZone":"Europe/Berlin"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"iso":{"type":"string"},"rfc2822":{"type":"string"},"local":{"type":"string","description":"Date and time in timeZone"},"unix":{"type":"object","properties":{"s":{"type":"string"},"ms":{"type":"string"},"us":{"type":"string"},"ns":{"type":"string"}},"required":["s","ms","us","ns"],"additionalProperties":false},"detectedUnit":{"type":"string","enum":["s","ms","us","ns"]},"relative":{"type":"string"},"weekday":{"type":"string"},"isoWeek":{"type":"object","properties":{"year":{"type":"number"},"week":{"type":"number"}},"required":["year","week"],"additionalProperties":false},"dayOfYear":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["iso","rfc2822","local","unix","relative","weekday","isoWeek","dayOfYear"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/unit-converter/convert":{"post":{"operationId":"unit-converter.convert","tags":["Unit Converter"],"summary":"Convert units","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"value":{"type":"number"},"category":{"type":"string","enum":["length","mass","temperature","volume","area","speed","time","data","pressure","energy"],"description":"One of: length, mass, temperature, volume, area, speed, time, data, pressure, energy"},"from":{"type":"string","description":"Source unit id, e.g. \"km\" or \"c\""},"to":{"description":"Target unit id. Omit to get every unit of the category.","type":"string"}},"required":["value","category","from"]},"example":{"value":5,"category":"length","from":"mi","to":"km"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"unit":{"type":"string"},"symbol":{"type":"string"},"value":{"type":"number"}},"required":["unit","symbol","value"],"additionalProperties":false},"results":{"type":"array","items":{"type":"object","properties":{"unit":{"type":"string"},"symbol":{"type":"string"},"value":{"type":"number"}},"required":["unit","symbol","value"],"additionalProperties":false}}},"required":["input","results"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/url-encoder/encode":{"post":{"operationId":"url-encoder.encode","tags":["URL Encode / Decode"],"summary":"Percent-encode text","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string"},"scope":{"default":"component","description":"component: also encodes & = ? / …; full: keeps the URL structure","type":"string","enum":["component","full"]},"spaceAsPlus":{"default":false,"description":"Encode spaces as + (form encoding)","type":"boolean"}},"required":["text"]},"example":{"text":"Grüße & Küsse"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"encoded":{"type":"string"}},"required":["encoded"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/url-encoder/decode":{"post":{"operationId":"url-encoder.decode","tags":["URL Encode / Decode"],"summary":"Decode percent-encoding","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string"},"plusAsSpace":{"default":false,"description":"Treat + as space","type":"boolean"}},"required":["text"]},"example":{"text":"Gr%C3%BC%C3%9Fe%20%26%20K%C3%BCsse"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"decoded":{"type":"string"}},"required":["decoded"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/url-encoder/parse":{"post":{"operationId":"url-encoder.parse","tags":["URL Encode / Decode"],"summary":"Split a URL into its parts","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","maxLength":10000,"description":"Absolute URL including the scheme"}},"required":["url"]},"example":{"url":"https://no.tools/de/api?ref=docs&lang=de#base64"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"parts":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"description":"protocol, username, host, port, path, query, fragment (empty parts omitted)"},"params":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"additionalProperties":false},"description":"Decoded query parameters"}},"required":["parts","params"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/uuid-generator/generate":{"post":{"operationId":"uuid-generator.generate","tags":["UUID / ULID Generator"],"summary":"Generate UUIDs or ULIDs","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"type":{"default":"v4","description":"v4 = random, v7 = time-ordered, ulid = time-ordered Crockford Base32","type":"string","enum":["v4","v7","ulid"]},"count":{"default":1,"description":"Number of IDs (1–1000)","type":"integer","minimum":1,"maximum":1000},"uppercase":{"default":false,"type":"boolean"},"hyphens":{"default":true,"description":"UUIDs only","type":"boolean"},"braces":{"default":false,"description":"UUIDs only: wrap in { }","type":"boolean"}}},"example":{"type":"v7","count":3}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}}},"required":["ids"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/uuid-generator/decode":{"post":{"operationId":"uuid-generator.decode","tags":["UUID / ULID Generator"],"summary":"Inspect a UUID or ULID","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","description":"UUID (any version, with or without hyphens/braces) or ULID"}},"required":["id"]},"example":{"id":"01890a5d-ac96-774b-bcce-b302099a8057"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","enum":["uuid","ulid"]},"normalized":{"type":"string"},"version":{"type":"number"},"variant":{"type":"string"},"timestamp":{"description":"Embedded creation time (UUID v1/v6/v7, ULID)","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["kind","normalized"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/word-counter/stats":{"post":{"operationId":"word-counter.stats","tags":["Word & Character Counter"],"summary":"Count words, characters and more","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":1000000},"topWords":{"default":10,"description":"Number of most frequent words (3+ letters)","type":"integer","minimum":0,"maximum":100}},"required":["text"]},"example":{"text":"no.tools counts words. Words, characters and sentences!","topWords":3}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"characters":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Visible characters (grapheme clusters), incl. spaces"},"charactersNoSpaces":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"words":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sentences":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paragraphs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lines":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uniqueWords":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"avgWordLength":{"type":"number"},"readingMinutes":{"type":"number","description":"At 200 words per minute"},"speakingMinutes":{"type":"number","description":"At 130 words per minute"},"bytes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Size in UTF-8"},"topWords":{"type":"array","items":{"type":"object","properties":{"word":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["word","count"],"additionalProperties":false}}},"required":["characters","charactersNoSpaces","words","sentences","paragraphs","lines","uniqueWords","avgWordLength","readingMinutes","speakingMinutes","bytes","topWords"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/word-counter/transform":{"post":{"operationId":"word-counter.transform","tags":["Word & Character Counter"],"summary":"Transform text (case, lines, cleanup)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":1000000},"transform":{"type":"string","enum":["upper","lower","title","sentence","camel","pascal","snake","kebab","constant","sortAsc","sortDesc","reverseLines","dedupe","removeEmpty","trimLines","collapseSpaces","reverse"]},"locale":{"description":"Locale for case conversion, e.g. \"tr\" or \"de\"","type":"string","maxLength":20}},"required":["text","transform"]},"example":{"text":"Hello no.tools API","transform":"kebab"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false}}}},"400":{"description":"Malformed request (e.g. invalid JSON body) or parameters that do not match the schema","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body larger than 10 MB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Valid parameters, but the tool cannot process the input (e.g. invalid Base64)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded – retry after the time in the Retry-After header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid-input"},"message":{"type":"string"},"details":{"description":"Optional structured details, e.g. validation issues or a line/column"}}}}}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional API key for a higher rate limit"}}}}